<!-- uncomment this if you want the admin servlet --> <!-- <servlet-mapping> <servlet-name>AdminServlet</servlet-name> <url-pattern>/servlet/AdminServlet</url-pattern> </servlet-mapping> --> <session-config> <session-timeout>20</session-timeout> </session-config> <!-- currently the W3C havent settled on a media type for WSDL; http://www.w3.org/TR/2003/WD-wsdl12-20030303/#ietf-draft for now we go with the basic 'it's XML' response --> <mime-mapping> <extension>wsdl</extension> <mime-type>text/xml</mime-type> </mime-mapping>
<welcome-file-list id="WelcomeFileList"> <welcome-file>index.jsp</welcome-file> <welcome-file>index.html</welcome-file> <welcome-file>index.jws</welcome-file> </welcome-file-list> </web-app> 可参照“axis-1_4/webapps/axis/WEB-INF/web.xml”进行配置; 4、编写服务端程序server,SayHello.java,编译server.SayHello.java package server; public class SayHello { public String getName(String name) { return "hello "+name; } } 5、编写wsdd文件 deploy.wsdd文件内容如下: <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="SayHello" provider="java:RPC"> <parameter name="className" value="server.SayHello.getName"/> <parameter name="allowedMethods" value="*"/> <parameter name="scope" value="session"/><!-- request, session, or application --> </service> </deployment> 6、把工程发布到Tomcat并启动Tomcat; 7、发布服务 编辑一个deploy.bat,Axis_Lib为axis.jar路径。内容如下: set Axis_Lib=./lib set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib% set Axis_Servlet=http://localhost:8080/AxisTest/servlet/AxisServlet %Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% deploy.wsdd
执行这个批处理文件,这时候,如果提示成功的话,访问http://localhost:8080/AxisTest/servlet/AxisServlet或http://localhost:8080/AxisTest/services就会显示服务列表。 8、生成客户端client stub文件 在浏览器上访问服务器端的服务,可以下载到WSDL文件,通过Axis的相关工具,可以自动从WSDL文件中生成Web Service的客户端代码。 编写一个WSDL2Java.bat文件,其内容如下: set Axis_Lib=./lib set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib% set Output_Path=./src set Package=server.com set wsdl_path=http://localhost:8080/AxisTest/services/ SayHello?wsdl %Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% %wsdl_path%
执行这个批处理文件就可以生成client stub. 生成的stub client文件列表为:SayHello.java,SayHelloService.java,SayHelloServiceLocator.java,SayHelloSoapBindingStub.java . 9、编写客户端程序,编译并执行 1)、Stubs方式 下面是一段junit测试客户端代码。 import java.net.URL; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class TestWSClient extends TestCase { public TestWSClient(String string) { super(string); } public void SayHelloClient() throws Exception { SayHelloService service = new SayHelloServiceLocator(); SayHello_PortType client = service.getSayHello() ; String retValue = client.getName("clientname"); System.out.println(retValue); } public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest(new TestWSClient("SayHelloClient")); return suite; } } 2)、动态调用方式: try { // Options options = new Options(args);
Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress( new java.net.URL(endpointURL) ); call.setOperationName( new QName("SayHello", "getName") ); String res = (String) call.invoke( new Object[] {"Jack"} ); System.out.println( res ); } catch (Exception e) { System.err.println(e.toString()); }