今天学习了一下webservice的东西,在网上看了些简单的例子,自己有实现了一下,例子都很简单,只是需要哪些JAR倒是挺烦的,因为网上的例子只提到AXIS,其他需要的都是debug出来的。特意列出来,不甚懂为什么需要,只是没有就不能成功。高手看了,还望指点一二。
项目的名字是:webserviceDemo
必需的JAR:
axis.jar
commons-logging.jar
saaj.jar
jaxrpc.jar
commons-discover-0.2.jar
wsdl4j-1.5.1.jar
配置文件:
主要是web.xml 和 *.wsdd 文件的配置,都放在web-inf下
(1)web.xml
没什么需要特别说明的,就和配置普通的servlet一样
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
- <display-name>TrendMicro SilkCentral Test Manager Report System</display-name>
- <session-config>
- <session-timeout>30</session-timeout>
- </session-config>
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- </welcome-file-list>
- <servlet>
- <servlet-name>AxisServlet</servlet-name>
- <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>AxisServlet</servlet-name>
- <url-pattern>/services/*</url-pattern>
- </servlet-mapping>
- </web-app>
(2)server-config.wsdd
- <?xml version="1.0" encoding="UTF-8"?>
- <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
- <globalConfiguration>
- <parameter name="sendMultiRefs" value="true"/>
- <parameter name="disablePrettyXML" value="true"/>
- <parameter name="dotNetSoapEncFix" value="true"/>
- <parameter name="enableNamespacePrefixOptimization" value="false"/>
- <parameter name="sendXMLDeclaration" value="true"/>
- <parameter name="sendxsitypes" value="true"/>
- <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>
- </globalConfiguration>
- <handler type="java:org.apache.axis.handlers.http.URLMapper" name="URLMapper"/>
- <service name="Test" provider="java:RPC">
- <parameter name="className" value="test.Test"/><!-- 你要改的就是这.这写上要调用的类.就可以 -->
- <parameter name="scope" value="request"/>
- <parameter name="allowedMethods" value="*"/> <!-- 这*代表所有的方法 -->
- <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
- </service>
- <transport name="http">
- <requestFlow>
- <handler type="URLMapper"/>
- </requestFlow>
- </transport>
- </deployment>
编写方法
- package test;
- public class Test {
- public String Test1(String name){
- return name;
- }
- }
测试
访问http://localhost:8080/webserviceDemo/services ,测试是否成功,注意地址最后不用加/,加上就访问不到了(不明白未什么)
webservice上的方法参数可以任意传,但是返回值我只会返回基本类型,如果要返回对象、数组的,我还不知道怎么弄。下面的例子是简单的调用。
- package test;
- import java.util.List;
- import org.apache.axis.client.Call;
- import org.apache.axis.client.Service;
- public class TestCall {
- public static void main(String[] args) {
- // Todo Auto-generated method stub
- String url = "http://localhost:8080/webserviceDemo/services/Test";
- Service service = new Service();
- Call call;
- try {
- call = (Call) service.createCall();
- call.setTargetEndpointAddress(new java.net.URL(url));
- call.setoperationName("Test1");
- call.setReturnClass(List.class);
- int ret = (Integer) call.invoke(new Object[]{"nameameddfasdfsdf"});
- System.out.println("--------"+ret);
- } catch (Exception e) {
- // Todo Auto-generated catch block
- e.printstacktrace();
- }
- }
- }
好,就到这些,实现这个例子,遇到的纠结问题就是那几个jar的问题。然后就是调用时,怎么设置传递参数的问题。传递参数有很多方法要设置,比如call.addParameter(),call.setReturnType,qn等等,网上看的,不是很明白,记下来,留个提示。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。