用axis实现webservice的基础知识

A.如何获得 WSDL 文件

  1. 在“应用程序”窗格中,浏览至要为其生成 WSDL 文件的 JWS 文件。
  2. 在“应用程序”窗格中用鼠标右键单击 JWS 文件,然后选择“生成 WSDL 文件”。
  3. 如果 JWS 文件的名称是 MyService.jws,则在同一目录中创建名为 MyServiceContract.wsdl 的文件。默认情况下,WSDL 文件链接到从中生成它的 JWS 文件,这意味着当更改 JWS 文件时会重新生成 WSDL 文件。

Web Service 的 WSDL 文件可用于任何可到达 Web Service 的 URL 的潜在客户端。从 WebLogic Server 获取 Web Service 的 WSDL 文件:

  1. 在浏览器中,浏览至附加了 ?WSDL 的 Web Service 的 URL。例如:
    http://myServer:7001/MyProject/MyWebService.jws?WSDL
  2. 使用浏览器的“文件”-->“另存为”功能将 WSDL 文件保存到本地机器。请注意,某些浏览器将在已保存文件的顶部和底部包含 HTML 标记。必须使用文本编辑器删除这些标记以生成有效的 WSDL 文件。

 B.用deploy.wsdd生成server-config.WSDD文件

在%TOMCAT_HOME%/webapps/axis/WEB-INF下新建deploy.wsdd文件,即SOAP服务发布描述文件 deploy.wsdd <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="HelloWorld" provider="java:RPC"> <parameter name="className" value="HelloWorld"/> <parameter name="allowedMethods" value="sayHello"/> </service> </deployment> 在%TOMCAT_HOME%/webapps/axis/WEB-INF目录下执行下列语句 java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/axis/services/AdminService deploy.wsdd 要注意的是 -Djava.ext.dirs=lib这个参数,这个参数可以使你编译过程中动态调用axis.jar包。而不需要事先在系统变量里配置axis.jar包的路径。另外,-lhttp://之后只有axis这个字符串可以根据项目名称的不同而修改,其他的都是必然写法。

C.用wsdl文件生成客户端的java文件 

在%TOMCAT_HOME%/webapps/axis/WEB-INF目录下执行下列语句  java -Djava.ext.dirs=./web/WEB-INF/lib org.apache.axis.wsdl.WSDL2Java http://localhost:5888/szcg/services/businessService?wsdl -t

总结,server-config.wsdd文件得靠自己写(暂时这么认为,不知道有没有工具可以根据服务端java类自动产生,自己也可以写一个)下面为客户端代码解释:

String endpoint = "http://172.31.0.42:8888/test/services/testService?wsdl";    Service service = new Service();    Call call call = (Call) service.createCall();

   QName qn = new QName("process");    QName qx = new QName("urn:BeanService", "CommonResult");        call.setOperationName(qn);//设置你要调用的远程方法名    call.registerTypeMapping(CommonResult.class, qx,      new BeanSerializerFactory(CommonResult.class, qx),      new BeanDeserializerFactory(CommonResult.class, qx));//序列化和反序列化传回的参数,如无自定义的类可不设置这个参数

     call.setTargetEndpointAddress(new java.net.URL(endpoint));//设置要调用远程方法的类,类可在server-config.wsdd配置文件里找到,    call.setUseSOAPAction(true);    String params = "<?xml version='1.0' encoding='UTF-8'?><request><function name='feedback'/><params><xmbh>a</xmbh><qsdw>b</qsdw><sgyj>c</sgyj><txsj>2008-07-03 17:35:00</txsj><txr>d</txr></params></request>";//用xml写成传入参数,这样可以简化参数个数,参数可任意增加和减少    

    CommonResult obj1=(CommonResult) call.invoke(new Object[] { params });

server-config.wsdd配置文件是axis.jar文件中会自动调用.

测试axis服务器是否设置好可以在浏览器里输入http://172.31.0.42:8888/test/services/testService?wsdl,无错误则表示wsdd配置文件无误.

如在项目中加入webservic刚要在web.xml文件里加入

<servlet>   <servlet-name>AxisServlet</servlet-name>   <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>   <load-on-startup>5</load-on-startup>   </servlet><servlet-mapping>   <servlet-name>AxisServlet</servlet-name>   <url-pattern>/services/*</url-pattern>   </servlet-mapping>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值