Axis2-WebService框架的学习心得-01

简介:

 今天看了之前几天写的代码,关于WebService框架--Axis2的一些心得,总体我把Axis2的开发步骤和结构分为3部分:

     1.初始化组件:

     1.1 核心组件类:

                       RPCServiceClient--客户端服务类--建立全局的Axis2对象的基础核心组件

                       MessageContext--消息摘要上下文--建立全局 消息摘要的上下文组件,即使整体WebService系统框架的上下文操作。

                       EndpointReference--终结点外向指引--作为整体WebService框架的重要的核心组件。进行操作请求地址,

                      Options--操作选项--执行连接RPCServiceClient和EndpointReference两个最重要核心组 件,本身作为一个容器,进行存放EndpointReference组件

                       QName--webService框架的命名调用规范对象,包含两部分:名空间+方法名,

 

     1.2 自定义实体类:

         RPCModel对象实体信息类:

         以下就是我自定义的类型熟悉,仅供参考

          targetNameSpace--名空间

          targetMethodName--方法名

          targetServiceUrl--服务请求路径

          paramArray--参数数组文件

          overtime--超时时间

         returnType--返回类型

     2.创建服务端:

        private static RPCServiceClient invokeBase(RPCModel model) throws AxisFault{

                if(model == null)

                  throw new IllegalArgumentException("出现参数为空的异常!"); 

               EndpointReference edf = new EndpointReference(model.getTargetServiceUrl());

               Options options = RPCClientFactory.newInstance().initOptions();

               options.setTo(edf);

               RPCServiceClient client = RPCClientFactory.newInstance().initClient();

              MessageContext messgeContext = RPCClientFactory.newInstance().initMessageContext();

               messgeContext.setServiceContext(client.getServiceContext());

                MessageContext.setCurrentMessageContext(messgeContext);

               if(model.getOverTime() != null)

                  options.setTimeOutInMilliSeconds(model.getOverTime());

                 client.setOptions(options);

                 return client;

}

 

<?xml version="1.0" encoding="utf-8"?>

<service name="TestService">

 <description>

  testService

 </description>

 <messageReceivers>

 <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" 

  class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver">

 </messageReceiver>

 <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver">

 </messageReceiver>

 </messageReceivers>

 <parameter name="ServiceClass">axisPro.test.TestService</parameter>

 

</service>

 

     3.调用服务端: 

        @Override

public void invokeNoReturnMethod(RPCModel model) {

try {

RPCServiceClient client = invokeBase(model);

Object [] params = model.getParamArray();

QName qName = new QName(model.getTargetNameSpace(),model.getTargetMethodName());

OMElement qm  = client.invokeBlocking(qName,params);

} catch (AxisFault e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

 

@Override

public Object invokeReturnMethod(RPCModel model) {

try {

RPCServiceClient client = invokeBase(model);

Object [] params = model.getParamArray();

QName qName = new                                   QName(model.getTargetNameSpace(),model.getTargetMethodName());

//Class [] returnType = new Class[]{String.class};

Object[] response  = client.invokeBlocking(qName,params,model.getReturnType());

return response[0];

} catch (AxisFault e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

       4.测试类:

public static void clientTest()

RPCInvokeService ris = new RPCInvokeImpl();

RPCModel model = new RPCModel();

model.setReturnType(new Class[]{String.class});

model.setTargetMethodName("test");

model.setTargetServiceUrl("http://127.0.0.1/axisPro/services/TestService");

model.setTargetNameSpace("http://test.axisPro");

model.setParamArray(new Object[]{"�"});

System.out.println(ris.invokeReturnMethod(model).toString());

 

}

相关文章
|
测试技术 网络架构
|
JavaScript 数据格式 XML
webService学习之前奏
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.
851 0
|
Web App开发
【WebService学习】用思维导图和实例学习Web Service
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.SOAP消息: 2.WSDL 3.Web Service 4.实例: 1)Eclipse 以及Ant建立一个简单的Web Service,以演示Web Service的基本开发过程:http://blog.csdn.net/gnuhpc/archive/2009/12/22/5047951.aspx 2)QT SOAP 的一个实例: 开始学习时,看到网上有朋友说这个库难用,我觉得还好吧,蛮好使的,下边写一个例子。
1183 0
|
Java C# 应用服务中间件
java学习:调用 java web service
先写一个java的class:AwbModel(相当于要在web service中传输的实体对象) package webservicesample; public class AwbModel { private String _a1 = "_a1"; publ...
956 0
|
Java Android开发
从零开始学习 webservice第一集,java webservice简单实例入门教程
现在从零开始学习webservice 概念自己百度搜,总之,webservice就相当于一个接口,就像你走进了一家售货店,你不需要知道这家店怎么卖给你东西,你拿着钱去,说我要一包玉溪,人家就会给你返回一包玉溪烟,这就是webservice。
1748 0