前提:已有一个web项目,名为testAxis ,路径:E:/eclipseWork/testAxis
1、下载axis包
http://www.apache.org/dyn/closer.cgi/ws/axis/1_4
下载 axis-bin-1_4.zip
解压到 E:/axis-1_4
2、配置axis
将 E:/axis-1_4/lib 里面的文件拷到 E:/eclipseWork/testAxis/web/WEB-INF/lib 下
编辑 E:/eclipseWork/testAxis/web/WEB-INF/web.xml
在
<welcome-file-list>
<welcome-file>index.jsp</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 > /servlet/AxisServlet </ url-pattern >
- </ servlet-mapping >
- < 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 >
-
- < mime-mapping >
- < extension > wsdl </ extension >
- < mime-type > text/xml </ mime-type >
- </ mime-mapping >
- < mime-mapping >
- < extension > xsd </ extension >
- < mime-type > text/xml </ mime-type >
- </ mime-mapping >
在向你的项目中加入的WebRoot目录中加入*.jws文件,这时访问你的项目名+*.jws 如:http://localhost/webservice/WSTestImpl.jws?wsdl 成功会在页面中出现wsdl文件
还可以如下配置:
编辑tomcat/conf/server.xml
在
<Host name="localhost" debug="0" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
后加入:
<Context docBase="E:/eclipseWork/testAxis/web" path="/testAxis" reloadable="true" />
启动tomcat 访问: http://localhost:8080/testAxis/services
可以看到:
And now... Some Services
3、编写webservice服务端
在web项目下新建一个类
- package com.neo.test;
-
- public class HelloWorld {
- public String sayHello() {
- return "hello" ;
- }
- }
4、注册服务
在 E:/eclipseWork/testAxis/web/WEB-INF 下新建文本文件 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 = "com.neo.test.HelloWorld" />
- < parameter name = "allowedMethods" value = "*" />
- </ service >
- </ deployment >
启动刚刚配置好的项目,并确保访问http://localhost:8080/testAxis/services 页面显示正常
打开cmd
cd E:/eclipseWork/testAxis/web/WEB-INF
E:/eclipseWork/testAxis/web/WEB-INF>java -Djava.ext.dirs=E:/eclipseWork/testAxis/web/WEB-INF/lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/testAxis/servlet/AxisServlet deploy.wsdd
成功的话会显示:
Processing file deploy.wsdd
<Admin>Done processing</Admin>
并在 E:/eclipseWork/testAxis/web/WEB-INF 下面产生 server-config.wsdd 文件
重启tomcat,并访问 http://localhost:8080/testAxis/services 会发现多出来一个service
And now... Some Services
就说明你的配置成功了
5、测试webservice
访问 http://localhost:8082/testAxis/services/SayHello?wsdl
- <? xml version = "1.0" encoding = "UTF-8" ?>
- < wsdl:definitions targetNamespace = "http://localhost:8082/testAxis/services/SayHello" xmlns:apachesoap = "http://xml.apache.org/xml-soap" xmlns:impl = "http://localhost:8082/testAxis/services/SayHello" xmlns:intf = "http://localhost:8082/testAxis/services/SayHello" xmlns:soapenc = "http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl = "http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap = "http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd = "http://www.w3.org/2001/XMLSchema" >
- <!--WSDL created by Apache Axis version: 1.4
- Built on Apr 22, 2006 (06:55:48 PDT)-->
-
- < wsdl:message name = "sayHelloRequest" >
-
- </ wsdl:message >
-
- < wsdl:message name = "sayHelloResponse" >
-
- < wsdl:part name = "sayHelloReturn" type = "xsd:string" />
-
- </ wsdl:message >
-
- < wsdl:portType name = "HelloWorld" >
-
- < wsdl:operation name = "sayHello" >
-
- < wsdl:input message = "impl:sayHelloRequest" name = "sayHelloRequest" />
-
- < wsdl:output message = "impl:sayHelloResponse" name = "sayHelloResponse" />
-
- </ wsdl:operation >
-
- </ wsdl:portType >
-
- < wsdl:binding name = "SayHelloSoapBinding" type = "impl:HelloWorld" >
-
- < wsdlsoap:binding style = "rpc" mce_style = "rpc" transport = "http://schemas.xmlsoap.org/soap/http" />
-
- < wsdl:operation name = "sayHello" >
-
- < wsdlsoap:operation soapAction = "" />
-
- < wsdl:input name = "sayHelloRequest" >
-
- < wsdlsoap:body encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/" namespace = "http://test.neo.com" use = "encoded" />
-
- </ wsdl:input >
-
- < wsdl:output name = "sayHelloResponse" >
-
- < wsdlsoap:body encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/" namespace = "http://localhost:8082/testAxis/services/SayHello" use = "encoded" />
-
- </ wsdl:output >
-
- </ wsdl:operation >
-
- </ wsdl:binding >
-
- < wsdl:service name = "HelloWorldService" >
-
- < wsdl:port binding = "impl:SayHelloSoapBinding" name = "SayHello" >
-
- < wsdlsoap:address location = "http://localhost:8082/testAxis/services/SayHello" />
-
- </ wsdl:port >
-
- </ wsdl:service >
-
- </ wsdl:definitions >
打开cmd
cd E:/eclipseWork/testAxis
E:/eclipseWork/testAxis>java -Djava.ext.dirs=E:/eclipseWork/testAxis/web/WEB-INF
/lib org.apache.axis.wsdl.WSDL2Java -oE:/eclipseWork/testAxis/src -pcom.neo.clie
nt http://localhost:8082/testAxis/services/SayHello?wsdl
执行后在src下产生 E:/eclipseWork/testAxis/src/com/neo/client 文件夹里面有四个java文件:
HelloWorld.java
HelloWorldService.java
HelloWorldServiceLocator.java
SayHelloSoapBindingStub.java
这是根据服务器端提供的wsdl生成的客户端需要的基础文件
在com.neo.client下新建一个类
- package com.neo.client;
-
- import java.rmi.RemoteException;
- import javax.xml.rpc.ServiceException;
-
- public class HelloWorldClient {
- public void testSayHello() throws ServiceException, RemoteException{
- HelloWorldService service = new HelloWorldServiceLocator();
- HelloWorld client = service.getSayHello();
- System.out.println(client.sayHello());
- }
-
- public static void main(String[] args) {
- HelloWorldClient client = new HelloWorldClient();
- try {
- client.testSayHello();
- } catch (RemoteException e) {
- e.printStackTrace();
- } catch (ServiceException e) {
- e.printStackTrace();
- }
- }
- }
直接运行,如果打印出 hello 就说明客户端调用成功!
转载:http://blog.csdn.net/nsrainbow/article/details/4131196