最近在做一些关于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 接口,具体的写法网上例子很多,在这就不多说了。
分享到:
相关推荐
### 几种调用WebService的方法 #### WebService简介与调用方法概述 WebService是一种通过标准的Web协议(如HTTP)来提供服务的应用程序接口(API),它允许在不同平台、不同语言开发的应用程序之间进行通信。...
Web Service是一种基于标准的、跨平台的、可互操作的服务,它允许不同系统之间的数据交换。MyEclipse作为Java EE开发工具,提供了方便的Web Service开发支持。 首先,我们从创建一个Web Service工程开始。在...
在IT领域,尤其是企业级应用开发中,WebService作为一种标准化的、跨平台的服务交互方式,被广泛应用于系统间的数据交换与服务调用。本文将基于给定的“Java开发WebService实例”内容,深入解析如何在Tomcat中间件...
使用jaxws开发webservice。 Webservice三要素 Wsdl(webservice使用说明书)重点掌握 Soap(jaxws开发webservice的传输协议)重点掌握 UDDI(了解) Webservice的使用场景分析(掌握) 学会jaxws基本开发方法...
Java 调用 Webservice 的几种方法总结中,主要介绍了使用 JDK Web 服务 API、Axis 和 XFire 等方法来调用 Webservice。下面将对每种方法进行详细的介绍。 使用 JDK Web 服务 API 使用 JDK Web 服务 API 可以实现...
在IT行业中,开发Web服务是常见的任务之一,用于构建可跨平台、跨系统通信的应用程序。Eclipse作为一款强大的Java集成开发环境(IDE),提供了丰富的工具支持开发WebService。本篇文章将详细阐述如何利用Eclipse来...
WebService是Web应用程序之间的一种通信标准,它允许不同的系统通过网络交换数据和服务。本文将深入探讨在Java环境中调用WebService的五种主要方式:Axis、CXF、HttpClient、MyEclipse反向生成以及XFire。 1. Axis...
Java WebService接口开发是将Java应用程序暴露为网络服务的一种方式,允许不同系统间的数据交换和交互。本案例将深入探讨如何使用Java实现Web服务的创建、发布和调用。 一、理解WebService WebService是一种基于...
WebService是一种基于标准的、平台无关的通信协议,用于在不同应用之间交换数据和服务。本教程将详细介绍如何在Eclipse环境中开发WebService以及各种调用方式。 首先,我们需要了解WebService的基本概念。...
在Java开发领域,WebService是一种基于开放标准(如SOAP、WSDL和UDDI)的通信协议,它允许不同系统之间进行数据交换,跨越各种平台和编程语言。本教程将深入讲解如何使用JDK(Java Development Kit)来创建和消费Web...
PB(PowerBuilder)是一种流行的4GL(第四代编程语言)应用程序开发工具,尤其在企业级应用中被广泛使用。Webservice则是一种基于Web的、松散耦合的服务交互方式,它使用XML作为数据交换格式,使得不同系统之间可以...
【Delphi开发的Web服务(WebService)实例】 在IT领域,Web服务是一种通过网络进行通信的应用程序接口(API)。...通过学习和实践这样的实例,开发者可以深入理解Web服务的工作原理,提升自己的跨平台开发能力。
【WebService一——使用JDK开发WebService】 WebService是一种基于XML(Extensible Markup Language)的网络服务标准,它允许不同系统间的应用程序进行交互,不受操作系统、编程语言的限制。本篇文章将探讨如何使用...
总之,使用Apache Axis进行WebService开发是一种有效且灵活的方法,它简化了Java应用与Web服务的集成,使得开发者可以更加专注于业务逻辑的实现。通过理解上述步骤和概念,你可以快速搭建并部署自己的Web服务。
本资源包“VC++ 开发WebService.rar”聚焦于使用Microsoft Visual C++(简称VC++)来创建和调用Web服务。接下来,我们将深入探讨相关知识点。 1. **SOAP与XML** Web服务主要通过SOAP(Simple Object Access ...
WebService是一种基于互联网的、平台无关的简单方式,它允许不同系统之间进行通信和数据交换。在本项目中,我们将探讨“webservice开发”,包括服务端和客户端的实现。 一、WebService基本概念 WebService是一种...
用友NC65-uapstudio webservice开发配置说明文档 用友NC65-erp开发工具uapstudio进行开发webservice时,需要对开发工具进行必要的设置。以下是uapstudio中的webservice开发配置说明: 一、UAPStudio中的webservice...
内容概要:文章介绍了几种流行的Webservice框架—— Apache Axis1/Apache Axis2/Codehaus XFire/Apache CXF,并对其性能进行了对比测试和分析。采用了JAVA作为测试语言并在本地和远程环境中进行测试,最终发现Apache...
在NC65开发环境中,利用UAP-STUDIO6.5插件开发和发布WebService是一个相对标准的过程,但与之前的版本(如NC633)有所不同。以下是对这一过程的详细说明: 1. **安装插件**: 开发者首先需要安装支持WebService...