Axis2简单应用

(一) Axis2在tomcat发布

1.        编写服务器端代码:

public class AxisServices {

   

    public String sayHello(String name){

       return "hello:"+name;

    }

 

}

2.        将下载的axis2.war包直接部署在tomcat下,将服务器类的class文件直接部署在axis2\WEB-INF\pojo目录中(根据axis2.xml的配置),然后访问tomcat下的axis2工程即可看到发布的ws,但是这种直接发布class文件到axis2工程目录的方法不适用带包的类。但项目中的ws几乎都需要一定的逻辑,这样带包也就不可避免,从而就需要配置services.xml文件,需放在META-INF文件夹中

<servicename="AxisService">

    <description>

        Axis Web Service

    </description>

    <parametername="ServiceClass">

       com.bryand.webservices.AxisServices 

    </parameter>

    <messageReceivers>

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

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

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

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

    </messageReceivers>

</service>

       Name:指定发布的ws名称,即访问ws的名称

       Parameter::SerciceClass-指定服务端实现类

       messageReceivers:soap信息处理器

还需要在项目web.xml配置axis2处理器servlet以处理ws请求数据

<servlet>

    <servlet-name>AxisServlet</servlet-name>

    <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>

    <load-on-startup>1</load-on-startup>

  </servlet>

  <servlet-mapping>

    <servlet-name>AxisServlet</servlet-name>

    <url-pattern>/services/*</url-pattern>

  </servlet-mapping>

3.        发布WS

将services.xml文件放入META-INF中

在cmd命令中进入当前目录jar –cvfAxisService.aar ./*打包

aar和jar包文件类似,只是apache区别于jar包的别名

可以在axis2工程中http://localhost:8080/axis2中通过Administrator上传该包发布WS,或者直接将该包置于web-inf/services目录中,然后访问axis2工程如果看到了发布的方法就发布工程了。

如果是发布在其他项目中,也是将该aar包放在web-inf/services目录中

(依赖的jar包如果不清楚需要哪些就将axis2中的lib包都拷贝过来)

 

客户端测试代码:

//RPC方式调用axis ws

           RPCServiceClient client=new RPCServiceClient();

           Options options=client.getOptions();

           EndpointReference target=new EndpointReference("http://localhost:8080/Bryand/services/AxisService");

           options.setTo(target);

           //指定参数值

           Object[] obj=new Object[]{"hurong"};

           //指定返回的数据类型的class类型

           Class[] paramClass=new Class[]{String.class};

           //指定调用的方法

           QName qName=new QName("http://webservices.bryand.com","sayHello");//命名空间,也就是包名倒过来,在wsdl文件中可以找到

           Object[] result=client.invokeBlocking(qName,obj,paramClass);

           System.out.println("result: "+result[0]);

 

 

(二) Axis2在weblogic中发布

1.        在项目web-inf目录下添加weblogic.xml文件:加入

<container-descriptor>

<prefer-web-inf-classes>true</prefer-web-inf-classes>

</container-descriptor>

       True保证了项目和weblogic中的包冲突时优先使用项目中的包

2.      添加services.list文件指定aar文件名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值