webservice接口(二)

服务器端开发:

1.首先创建一个web project;

2.依旧是接口类和实现类;

@WebService

public interface Hello {

    public String sayHello(String name);

}

public class HelloImpl implements Hello {

    @Override

    public String sayHello(String name) {

       return "Hello" + name;

    }

}

3.去apache官网下载axis2的war包:axis2-1.6.0-war.zip,解压后打开文件夹可以找到axis2.war,再将axis.war解压开;

4.引入axis2的相关jar包,将刚刚解压出来的axis2-web文件夹复制到web项目中的WebRoot下;

   该文件夹是axis2的web控制台信息,如不使用,则该步骤可以跳过;

5.将解压文件夹下的WEB-INF下的相关文件复制到工程中的WEB-INF下;

133918_uTKA_2296601.jpg

6.修改web.xml文件配置;

<servlet><display-name>Apache-Axis Servlet</display-name>

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

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

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

       <url-pattern>/servlet/AxisServlet</url-pattern>

    </servlet-mapping>

<servlet><display-name>Apache-Axis AxisAdmin Servlet (Web Admin)</display-name>

       <servlet-name>AxisAdminServlet</servlet-name>

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

       <load-on-startup>100</load-on-startup>

    </servlet><servlet-mapping>

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

       <url-pattern>*.jws</url-pattern>

</servlet-mapping><servlet-mapping>

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

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

    </servlet-mapping><servlet-mapping>

       <servlet-name>AxisAdminServlet</servlet-name>

       <url-pattern>/axis2-admin/*</url-pattern>

    </servlet-mapping>

7.修改services.xml配置

<serviceGroup>

    <service name="HelloService">

       <description>AxisService</description>

              <messageReceivers>

                     <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"           class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />

<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"      class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />

</messageReceivers>

<parameter name="ServiceClass">com.axis2.hello.impl.HelloImpl

       </parameter>

    </service>

</serviceGroup>

8.将上面ws_axis2_service工程打包发布到tomcat7中,然后启动服务,在IE中输入

http://localhost:8080/ws_axis2_service/services/HelloService?wsdl


二.客户端开发

Axis2的客户端调用方式很多,这里介绍两种最常用的方式:一种是生成客户端接口,通过接口调用;另一种:通过RPC调用,不需要生成客户端接口;这里都在java工程ws_axis2_client工程中的Junit环境下做的测试。

1.接口调用

a.打开cmd命令窗口,找到cxf安装包中的bin目录(如下)

F:\jar\axis2\axis2-1.6.1\bin>wsdl2java -uri http://localhost:8080/ws_axis2_servi

ce/services/HelloService?wsdl  -p com.axis2.proxy -o stub

说明:-p 包名路径,最好和项目中的包名对应,这样生成的代码无需修改。

          -o 生成的代码的位置,这是指当前目录下的stub文件目录。

          -uri 后面就是服务端生成的wsdl

b.将生成的stub下的代码Copy到我们的工程中,也可以将客户端代码编译后打包引入进工程中(如果生成的文件很多建议打成包)

c.引入客户端调用的包

d.测试代码

@Test

    public void testSayHello() throws Exception {

       try {

           HelloServiceStub stub = new HelloServiceStub() ;

           HelloServiceStub.SayHello sh = new HelloServiceStub.SayHello() ;

           sh.setName(" gary") ;

           String res = stub.sayHello(sh).get_return() ;

           System.out.println("return:"+res);

       } catch (Exception ex) {

           ex.printStackTrace();

       }

    }

2.RPC远程调用

a.导入所需要的jar包,这个从axis2包中COPY

b.测试代码

@Test

    public void testSayHello() throws AxisFault {

       RPCServiceClient serviceClient = serviceClient = new RPCServiceClient();String url = "http://localhost:8080/ws_axis2_service/services/HelloService?wsdl";

       Object[] obj = new Object[] { "gary" };try {

           Options options = serviceClient.getOptions();

           EndpointReference targetEPR = new EndpointReference(url);

           options.setTo(targetEPR);

           Class[] classes = new Class[] { String.class }; // 返回的类型为String       QName opAddEntry = new QName("http://impl.hello.axis2.com",

                  "sayHello");

    String xml = (String) serviceClient.invokeBlocking(opAddEntry, obj,classes)[0];

           System.out.println("xml:" + xml);

       } catch (AxisFault e) {

           e.printStackTrace();

       }

    }






转载于:https://my.oschina.net/u/2296601/blog/660183

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值