您的位置:首页 > 运维架构 > Tomcat

基于Eclipse、Tomcat、Axis开发WebService简单实例

2009-11-22 20:55 706 查看
1.首先建一个web工程,在buildpath里加入axis的相关包。(笔者推荐spring-framework-2.0.8-with-dependencies.zip里面几乎包含了java开发所能用到的所有的包。)

2.写一个最简单的java类,其中sayHello就是要发布的方法。

public class WebServiceTest {
public String sayHello(String name) {
return "Hello "+name+"!,this is an axis service.";
}
}

3.编写server-config.wsdd文件描述要发布的方法,放在web-inf目录下。

<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<handler type="java:org.apache.axis.handlers.http.URLMapper"
name="URLMapper" />
<service name="SayHello" provider="java:RPC">
<parameter name="className"
value="qw.webservice.WebServiceTest" />
<parameter name="allowedMethods" value="sayHello" />
</service>
<transport name="http">
<requestFlow>
<handler type="URLMapper" />
</requestFlow>
</transport>
</deployment>

4.配置web.xml文件,只需要添加如下内容,使项目能够相应客户端的请求。

<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>/services/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>

5.用eclipse将工程部署到tomcat下,启动,如果报类没有定义那就是缺包,添加即可。

6.测试一下服务是否发布成功。在浏览器地址栏输入http://localhost:8080/WebService/services,其中 WebService是我的工程的名字,根据需要修改。页面应该显示我们发布的服务如下,点击wsdl链接还能显示自动生成的wsdl文件的内容。

And now... Some Services

SayHello (wsdl)

sayHello

7.写客户端程序验证服务是否运行正常。

import java.net.MalformedURLException;
import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Service;
import org.apache.axis.client.Call;
public class Test {
public static void main(String[] args) throws ServiceException, MalformedURLException, RemoteException {
String endpoint = "http://localhost:8080/WebService/services/SayHello";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL (endpoint));
call.setOperationName("sayHello");
String res=(String)call.invoke(new Object[]{"qw"});
System.out.print(res);
}
}

如果打印出Hello qw!那么恭喜你,你的第一个webservice发布成功了。

8.实际使用时,根据wsdl文件使用ant或axis提供的工具自动生成客户端类,然后使用,而不是用上面的方式,好处是采用上面的方式使用有时在序列化时会产生bug。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: