最近在做一些关于webservice的项目,项目做完之后对当前流行的几种webservice的开发平台做了学习,比较,以下是各个平台开发实例,供大家参考,其中也含有我个人在开发过程中的一些感受和观点,纯属抛砖引玉,如有不对请指出,废话不多说直接进入正题。
目前比较流行的开发webservice的平台很多,主流的有如axis1.X,axis2.X,xfire,CXF等等,其中axis1.X属于第一代的webservice开发平台,axis2.X,xfire,CXF都属于第二代,在在第一代axis1.X中,axis1.4是最成熟最稳定的一个版本。axis2.X是Apache组织新出一个版本,与其说是axis1.X的升级版,到不如说是一个独立的版本,他完全颠覆了axis1.X的开发模式,xfire无论是效率和方便性都远高于axis1,但xfire的文档不如axis1全,但现在官网已经停止更新了,CXF是Apache组织把Celtix 和 XFire整合之后的新出一种,全称Apache CXF。(具体的可以去网上查询,这边只是对他们的实际应用做比较)
开发方式:
axis1.4有2种开发方式
首先,建立一个web工程,登陆Apache官网,下载axis1.4,从axis1.4中把开发所需要的jar包,并拷贝到web工程的lib包下,把以下内容拷贝添加到web.xml中。
<servlet>
<servlet-name>AxisServlet</servlet-name>
<display-name>Apache-Axis Servlet</display-name>
<servlet-class>
org.apache.axis.transport.http.AxisServlet
</servlet-class>
</servlet>
<servlet>
<servlet-name>AdminServlet</servlet-name>
<display-name>Axis Admin Servlet</display-name>
<servlet-class>
org.apache.axis.transport.http.AdminServlet
</servlet-class>
<load-on-startup>100</load-on-startup>
</servlet>
<servlet>
<servlet-name>SOAPMonitorService</servlet-name>
<display-name>SOAPMonitorService</display-name>
<servlet-class>
org.apache.axis.monitor.SOAPMonitorService
</servlet-class>
<init-param>
<param-name>SOAPMonitorPort</param-name>
<param-value>5001</param-value>
</init-param>
<load-on-startup>100</load-on-startup>
</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>
<servlet-mapping>
<servlet-name>SOAPMonitorService</servlet-name>
<url-pattern>/SOAPMonitor</url-pattern>
</servlet-mapping>
<session-config>
<!-- Default to 5 minute session timeouts -->
<session-timeout>5</session-timeout>
</session-config>
<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>
<!-- webService end-->
<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>
服务器端编写
一、即时发布jws(Java web service)
1、写一个java类,去掉其包名(如:package com.test.servcie),然后把Java类的后缀改为.jws,拷贝到上面所建项目的web-inf下,
2、启动服务器(任何能发布web工程的服务器都可以),访问http://localhost:8080/项目名/xxx.jws即可访问。此方法简单,但是不适合大项目和带包名的服务。不推荐使用,了解就行。
二 定制发布WSDD (这个是最常用的方式)
1、在上面所建的web工程的src目录下写一个接口类 HelloService和实现类HelloServiceIMpl
package com.zsh.service;
public interface HelloService {
public String getName(String name);
}
package com.zsh.service;
public class HelloServiceImpl implements HelloService{
public String getName(String name){
return "hello:"+name;
}
}
2、如果你有现成的server-config.wsdd文件的话最好,只需要在其中添加这么一段
<service name="HelloService " provider="java:RPC" style="wrapped" use="literal" xmlns:ns="http://www.linkage.com">
<parameter name="className" value="com.zsh.service.HelloServiceImpl "/>
<parameter name="allowedMethods" value="*"/>
<parameter name="scope" value="Request"/>
</service>
将其拷贝到web-inf目录下,启动服务器(任何能发布web工程的服务器都可以),
访问http://localhost:8080/项目名/services/HelloService?wsdl
没有server-config.wsdd的话在web-inf 下新建一个deploy.wsdd文件把下面内容的拷贝进去
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="HelloService " provider="java:RPC">
<parameter name="className" value="com.zsh.service.HelloServiceImpl " />
<parameter name="allowedMethods" value="*" />
<parameter name="scope" value="request"></parameter>
</service>
</deployment>
再在web-info目录下建一个deploy.bat文件的批处理文件
把下面的拷贝进去
set Java_Cmd=java -Djava.ext.dirs=lib
set Axis_Servlet=http://localhost:8080/项目名/servlet/AxisServlet
%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% deploy.wsdd
pause
双击执行,就会再旁边生成server-config.wsdd文件。
重启服务 访问访问http://localhost:8080/项目名/services/HelloService?wsdl(具体根据你们自己的web根路径)
这样服务器端就发布好,下面写客户端访问
客户端调用有三种方式
1、知道wsdl文档后,用命令生成
在web-inf目录下新建WSDL2Java.bat批处理文件
set Java_Cmd=java -Djava.ext.dirs=lib
set Output_Path=G:\workspace\webServiceDemo4\src
set Package=com.zsh.client
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% http://localhost:8080/项目名/services/HelloService?wsdl
就会在G:\workspace\webServiceDemo4\src目录下自动生成客户端代码,优点比较自动化,缺点废代码太多了,不简洁。
2、自己手动写客户端,用动态调用方式(这个是最常用的方法)
package com.linkage.client;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.rpc.ServiceException;
import org.apache.axis.AxisFault;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class WebClient {
private static String endPointUrl = "http://127.0.0.1:8080/项目名/services/HelloService ";
public static String getName(String request){
String response = null ;
Call call = null;
try {
call = (Call) new Service().createCall();
call.setTargetEndpointAddress(new URL(endPointUrl));
response = (String)call.invoke("getName", {request});
} catch (ServiceException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (AxisFault e) {
e.printStackTrace();
} return response;
}
public static void main(String[] args) {
String request = "zhangsh";
System.out.println(getName(request));
}
}
3使用动态代理
这个方法需要在客户端新建一个服务的接口,如上面的HelloService 接口,具体的写法网上例子很多,在这就不多说了。
分享到:
相关推荐
使用jaxws开发webservice。 Webservice三要素 Wsdl(webservice使用说明书)重点掌握 Soap(jaxws开发webservice的传输协议)重点掌握 UDDI(了解) Webservice的使用场景分析(掌握) 学会jaxws基本开发方法...
几种调用WebService的方法
MyEclipse开发WebService教程,详尽的介绍了Webservice的开发过程,很详细,一看就懂,你肯定学得会
Java开发tomcat中间件的WebService实例
WebService调用的几种方式,总结了Axis,Cxf,HttpClient,Myeclipse反向生成,XFire调用方式。
用eclipse开发WebService图解
借鉴网上的资源,弄了一个SpringBoot开发WebService之Axis示例。
黄老师用pb开发WEBSERVICE
VC++ 开发WebService.rar
开发webservice可以使用java、也可以使用c#。由于国内大多数计算机安装的是Windows系列操作系统,所以使用c#开发webservice不仅开发效率高,而且部署和维护很方便。 本文详细介绍了java如何调用c#开发的webservice。...
WebService功能及性能测试方法,自己总结
cxf 开发webservice客户端 代码经过测试
几种不同的发布和调用Webservice的方法,希望能给大家帮助!
使用axis开发webservice使用的jar包
Eclipse开发WebService.pdf Eclipse开发WebService.pdf
本文总结了当前主流的webservice开发框架的使用方法及说明,以及与spring集成需要注意的事项,共享出来希望对大家有所帮助~
java开发webservice的简单例子,简单看看
CXF开发webservice服务端,希望对大家有所帮助
WebService Axis 快速开发 一、开发环境 二、用Java 开发 WebService Axis简单实例
自己写的eclipse开发webservice小教程