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.
817 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 的一个实例: 开始学习时,看到网上有朋友说这个库难用,我觉得还好吧,蛮好使的,下边写一个例子。
1152 0
|
.NET 开发框架 开发工具
在WEBSERVICE学习中遇到的问题
向我的WEBSERVICE发了一个这样的GET类的请求http://127.0.0.1/VegService.asmx/Getvegetable?vegetablename=cucumber然后得到报错  “/”应用程序中的服务器错误。
812 0
|
4月前
|
XML Java 应用服务中间件
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
36 0
|
4月前
|
Java 应用服务中间件 Spring
WebService - Axis2使用services.xml进行开发server与client(未与Spring整合)
WebService - Axis2使用services.xml进行开发server与client(未与Spring整合)
44 0
|
4月前
|
Java 应用服务中间件 Spring
WebService - CXF开发Server和Client(main方法测试)
WebService - CXF开发Server和Client(main方法测试)
40 0
|
Java Android开发
哇!eclipse+webservice开发实例居然这样写(有源码可用)
哇!eclipse+webservice开发实例居然这样写(有源码可用)
107 0
哇!eclipse+webservice开发实例居然这样写(有源码可用)
|
Java 应用服务中间件 Apache
webservice开发不得不知的细节,Error creating bean with name ‘org.apache.cxf.jaxws.EndpointImpl---1987203924‘
webservice开发不得不知的细节,Error creating bean with name ‘org.apache.cxf.jaxws.EndpointImpl---1987203924‘
125 0