在Eclipse上使用XFire开发WebService

合集下载

xfire使用

xfire使用

wsdlDocumentURL 代表wsdl所对应的URL1、通过URLConnection创建连接,然后invoke相应接口优点:调用简单缺点:传递封装对象比较麻烦[java]view plaincopyprint?1.// wsdlDocumentURL必须是全地址(包含?wsdl)2.URL url = new URL(wsdlDocumentURL);3.URLConnection connection = url.openConnection();4.Client client = new Client(connection.getInputStream(), null);5.// invoke接口方法6.// 接口返回Object数组7.Object[] result = client.invoke("methodName", new Object[]{});[java]view plaincopyprint?.codehaus.xfire.service.Service serviceModel = new ObjectServiceFactory().create(接口.class);2.XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());3.IEmailBindHandlerService handler = (IEmailBindHandlerService) factory.create(serviceModel, wsdlURL);2、XFireProxyFactory创建客户端实例客户端需要明确知道接口详细信息[java]view plaincopyprint?.codehaus.xfire.service.Service serviceModel = new ObjectServiceFactory().create(IEmailBindHandlerService.class);2.XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());3.接口 handler = (IEmailBindHandlerService) factory.create(serviceModel, wsdl地址);3、通过eclipse自动生成webservice client4、通过org.codehaus.xfire.spring.remoting.XFireClientFactoryBean构建客户端实例[java]view plaincopyprint?1.<bean id="baseService" class="org.codehaus.xfire.spring.remoting.XFireClientFactoryBean" abstract="true">2. <property name="serviceFactory" ref="xfire.serviceFactory" />3. <!-- <property name="lookupServiceOnStartup" value="false" /> -->4. <property name="properties">5. <props>6. <!-- 等待HttpConnectionManager从连接池中返回空闲连接的超时时间 -->7. <prop key="http.connection.manager.timeout">1000</prop>8. <!-- 等待建立连接的超时时间 -->9. <prop key="http.connection.timeout">3000</prop>10. <!-- 等待服务器返回数据超时时间 -->11. <prop key="http.timeout">10000</prop>12. <!-- 连接到单个服务器的连接数上限 -->13. <prop key="max.connections.per.host">10</prop>14. <!-- 连接到所有服务器的连接个数上限 -->15. <prop key="max.total.connections">80</prop>16. </props>17. </property>18. </bean>19.20. <bean id="接口实例" parent="baseService">21. <property name="serviceClass" value="接口地址" />22. <property name="wsdlDocumentUrl" value="${xfireServerURL}/webservice名称?wsdl" />23. </bean>使用该配置方法的话,可以通过注入实现调用,同时可以减少手动创建URLConnection之后忘记关闭连接的尴尬只是如果使用该方法的时候,需要在web.xml中添加如下配置[java]view plaincopyprint?1.<context-param>2. <param-name>contextConfigLocation</param-name>3. <param-value>classpath:org/codehaus/xfire/spring/xfire.xml</param-value>4.</context-param>。

【WebService】接口的测试方法

【WebService】接口的测试方法

【WebService】接口的测试方法有以下多种方式:一、通过WSCaller.jar工具进行测试:前提:知道wsdl的url。

wsCaller可执行程序的发布方式为一个wsCaller.jar包,不包含Java运行环境。

你可以把wsCaller.jar复制到任何安装了Java运行环境(要求安装JRE/JDK 1.3.1或更高版本)的计算机中,用以下命令运行wsCaller:java -jar wsCaller.jar使用wsCaller软件的方法非常简单,下面是wsCaller的主界面:首先在WSDL Location输入框中输入你想调用或想测试的Web Service的WSDL位置,如“/axis/services/StockQuoteService?wsdl”,然后点“Find”按钮。

wsCaller就会检查你输入的URL地址,并获取Web Service的WSDL信息。

如果信息获取成功,wsCaller会在Service和Operation下拉列表框中列出该位置提供的Web Service服务和服务中的所有可调用的方法。

你可以在列表框中选择你要调用或测试的方法名称,选定后,wsCaller窗口中间的参数列表框就会列出该方法的所有参数,包括每个参数的名称、类型和参数值的输入框(只对[IN]或[IN, OUT]型的参数提供输入框)。

你可以输入每个参数的取值。

如下图:这时,如果你想调用该方法并查看其结果的话,只要点下面的“Invoke”按钮就可以了。

如果你想测试该方法的执行时间,则可以在“Invoke Times”框中指定重复调用的次数,然后再按“Invoke”按钮。

wsCaller会自动调用你指定的方法,如果调用成功,wsCaller会显示结果对话框,其中包括调用该方法所花的总时间,每次调用的平均时间和该方法的返回值(包括返回值和所有输出型的参数)。

如下图:wsCaller软件是基于Axis库(Apache eXtensible Interaction System)开发的,Axis库的介绍及其版权信息请参见Apache Software Foundation的网站/。

XFire开发webservice服务和客户端全攻略

XFire开发webservice服务和客户端全攻略

使用XFire开发webservice服务和客户端全攻略收藏XFire 是与Axis 2并列的新一代Web Service框架,通过提供简单的API支持Web Service 各项标准协议,帮助你方便快速地开发Web Service应用。

相对于Axis来说,目前XFire相对受欢迎,加上其提供了和Spring集成的支持,在目前的Web Service开源社区拥有众多的追随者。

并且因为XFire为Spring提供的支持,使得我们可以很容易在Spring中使用XFire构建Web Service应用。

XFire 与Axis2相比具有如下特征:l 支持一系列Web Service的新标准--JSR181、WSDL2.0 、JAXB2、WS-Security 等;l 使用Stax解释XML,性能有了质的提高。

XFire采用Woodstox 作Stax实现;l 容易上手,可以方便快速地从pojo发布服务;l 支持Spring、Pico、Plexus、Loom等容器;l 灵活的Binding机制,包括默认的Aegis,xmlbeans,jaxb2,castor;l 高性能的SOAP 栈设计;l 支持Spring、Pico、Plexus、Loom等容器。

XFire 与Axis1性能的比较如下:l XFire 比Axis1.3快2-6倍;l XFire 的响应时间是Axis1.3的1/2到1/5。

XFire 在WebService框架中开始较晚,它从现有的框架中借鉴了许多优秀的理念,力争将Web Service的应用开发难度降到最低。

此外,还提供了各种绑定技术、支持多种传输协议,对WebService体系中许多新的规范提供了支持。

下面让我们来看一个XFire于Spring集成的helloWorld的简单例子。

一.实现的功能和特点本例具有如下功能和特点:1)基于J2EE平台的Web Service服务;2)开发方便,配置简单;3)与spring无缝集成。

Web+Services发布与调用(axis,xfire)

Web+Services发布与调用(axis,xfire)

目录一使用Axis和XFire发布Web Service (2)1.1 准备工作 (2)1.1.1 新建工程 (2)1.1.2 axis依赖文件 (3)1.1.3 XFire依赖文件 (3)1.2 Axis发布Web Service (4)1.2.1 传递简单数据类型的Web Service (4)1.2.2 带自定义对象传递的Web Service (8)1.3 XFire发布Web Services (10)1.3.1 传递简单数据类型的Web Service (10)1.3.2传递复杂数据类型的Web Service (12)附录: 1Server的结构 (16)二调用Web Services (17)2.1 准备工作 (17)2.1.1 新建工程 (17)2.1.2 启动Tomcat上发布的1Server服务 (17)2.2 Axis发布的Web Service调用方式 (18)2.2.1 Dynamic Invocation Interface (DII)方式 (18)2.2.2 Dynamic Proxy方式 (19)2.2.3 Stubs方式 (20)2.3调用XFire发布的Web Service (22)2.3.1服务以jar包形式发布的时候直接调用 (23)2.3.2 使用Axis的Client包 (23)2.3.3 使用Xfire的Client包 (24)附录2:2Client目录结构 (31)一使用Axis和XFire发布Web Service 1.1 准备工作Axis主页:/Axis下载:/dist/ws/XFire主页:/XFire下载:/Download去以上站点下载axis最新包和XFire最新包,包内有axis和XFire依赖的其他jar包。

1.1.1 新建工程1.1.2 axis依赖文件1.1.3 XFire依赖文件1.2 Axis发布Web Service1.2.1 传递简单数据类型的Web Service1.把Axis依赖的jar包放入lib文件夹下.2.在web.xml中加入如下:<!-- ****************** axis ws start ****************** --> <listener><listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener </listener-class></listener><servlet><servlet-name>AxisServlet</servlet-name><servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class></servlet><servlet><servlet-name>AdminServlet</servlet-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><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><!-- 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><!-- Default to 5 minute session timeouts --><session-timeout>5</session-timeout></session-config><!-- currently the W3C havent settled on a media type for WSDL;/TR/2003/WD-wsdl12-20030303/#ietf-draftfor now we go with the basic 'it's XML' response -->3.发布到Tomcat5.0+ 启动Tomcat服务启动的时候若出现下面错误。

Axis2从入门到精通--Webservice在eclipse下开发教程

Axis2从入门到精通--Webservice在eclipse下开发教程

Axis2 教程文章分类:Java编程Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物。

Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebService,同时还支持Spring、JSON等技术。

这些都将在后面的系列教程中讲解。

在本文中主要介绍了如何使用Axis2开发一个不需要任何配置文件的WebService,并在客户端使用Java和C#调用这个WebService。

一、Axis2的下载和安装读者可以从如下的网址下载Axis2的最新版本:/axis2/在本文使用了目前Axis2的最新版本1.4.1。

读者可以下载如下两个zip包:axis2-1.4.1-bin.zipaxis2-1.4.1-war.zip其中axis2-1.4.1-bin.zip文件中包含了Axis2中所有的jar文件,axis2-1.4.1-war.zip文件用于将WebService发布到Web容器中。

将axis2-1.4.1-war.zip文件解压到相应的目录,将目录中的axis2.war文件放到<Tomcat安装目录>\webapps目录中(本文使用的Tomcat的版本是6.x),并启动Tomcat。

在浏览器地址栏中输入如下的URL:http://localhost:8080/axis2/如果在浏览器中显示出如图1所示的页面,则表示Axis2安装成功。

图1二、编写和发布WebService对于用Java实现的服务程序给人的印象就是需要进行大量的配置,不过这一点在Axis2中将被终结。

在Axis2中不需要进行任何的配置,就可以直接将一个简单的POJO发布成WebService。

其中POJO中所有的public方法将被发布成WebService方法。

下面我们来实现一个简单的POJO,代码如下:public class SimpleService{public String getGreeting(String name){return "你好 " + name;}public int getPrice(){return new java.util.Random().nextInt(1000);}}在SimpleService类中有两个方法,由于这两个方法都是public方法,因此,它们都将作为WebService方法被发布。

如何在MyEclipse和Eclipse下安装XFire插件CXF插件 WebService

如何在MyEclipse和Eclipse下安装XFire插件CXF插件 WebService

如何在MyEclipse和Eclipse下安装XFire插件CXF插件 WebService首先,现在都用CFX了(CFX部分源于XFire)吧,所以建议大家使用CXF,本文后面讲XFire安装……CXF的安装参见:Apache CXF: An Open-Source Services Framework /源文件的下载在/download.html博客更新时最新为2.42 一共两个文件,要下载的是其中的二进制下载包,也就是Binary distribution,下载File下的zip(for win)或者tar.gz(for linux)我用的是winXP下载完成后按照如下配置:将你的Binary distribution加压至任意文件夹(将被设为%CXF_HOME%)我的电脑->属性->高级->环境变量创建一个CXF_HOME变量,值为CXF框架所在根目录,修改一下CLASSPATH=%CXF_HOME%/lib;PATH=%CXF_HOME%/bin; 以方便在DOS窗口下直接运行java2ws,wsdl2java等可执行文件。

在%JAVA_HOME%/jre/lib目录下创建一下endorsed文件夹,将jaxb-api.jar,jaxws.jar拷贝进去。

(建议在%CXF_HOME%的文件夹中搜索endorsed,就包括这两个文件,当然,你也可以直接将这个路径包含在%CXF_HOME%\lib\endorsed包含在CLASSPATH中尝试一下,我没有试过)配置好了后,你在DOS窗口下输入java2ws,看看配置是否有效,有效会提示Missing argument: classname。

这样就OK了。

MyEclipse安装XFire要进行基于XFire的开发,需要在MyEclipse或者Eclipse里安装XFire,但是网上基本没有安装插件的说明,在这里做一个介绍:在Eclipse里添加XFire,请遵照XFire官网说明/Eclipse+Plugin进行安装在MyEclipse (9.0)骤如下:进入help->MyEclipse Configer Center ,点选Software选项卡,左侧有个Browse Software,点击导航右侧的 Add Site,弹出对话框,填入名称“XFire”(任填)和站点"/xfire/update/",点击确定,稍等片刻,你会发现在Browse Software下多了XFire的两个选项(只是找到,还没安装),OK,分别双击这两个选项,这连个添加会排程到等待更新的列表中,也就是页面右下角的Software Updates Aviables里面(其实有一个确实已经在MyEclipse里面安装了,所以应该只有一个更新),在单选框中打对勾,然后更新,会弹出更新向导,然后默认的Next Next就可以了……新建一个工程,在工程添加向导里你可能看不到XFire的选项,不急,在工程添加完成后,在工程上右键,在菜单上会出现“为该工程配置XFire”特性,在这里设置就好了……针对之前没说清楚,在这里补充这一点……完……安装完毕,新建工程,右键->添加XFire支持虽然不能从新建工程向导中配置,也没问题,恩恩完……。

Eclipse+CXF开发Web服务、Tomcat部署

Eclipse+CXF开发Web服务、Tomcat部署

一、下载CXF包,apache-cxf-2.6.1.tar.gz,解压后得到文件夹apache-cxf-2.6.1图1二、创建服务端1、新建Dynamic Web ProjectFile—New—Project—Web—Dynamic Web Project;工程命名后Next,将“Default output folder”改为WebContent/WEB-INF/classes,Next;勾选“Generate web.xml deployment discriptor”。

图2图3图42、将解压后apache-cxf-2.6.1文件夹lib文件夹中的JAR文件导入工程下WebContent/WEB-INF/lib中,或直接复制到相应文件夹下,刷新工程。

3、创建服务接口工程右键—New—Interface,添加代码:package com.yxj;import javax.jws.WebService;import javax.jws.WebParam;import javax.jws.WebMethod;@WebServicepublic interface IcxfWB {@WebMethodString sayHello(@WebParam(name="name") String name);}说明:“@WebService”标记表示该接口是一个WebService服务,@ WebMethod标记表示WebService中的方法;@WebParam(name="paramName")表示方法中的参数,name属性限制了参数的名称,若没有指定该属性,参数将会被重命名。

4、创建服务实现类package com.yxj;public class CxfWBImpl implements IcxfWB {public String sayHello(String name) {return"Hello "+name;}}5、编辑WebContent/WEB-INF下web.xml文件<?xml version="1.0"encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xmlns:web="/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID"version="3.0"><display-name>CXFService</display-name><context-param><param-name>contextConfigLocation</param-name><param-value>WEB-INF/service-beans.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><servlet><servlet-name>CXFServlet</servlet-name><servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class></servlet><servlet-mapping><servlet-name>CXFServlet</servlet-name><url-pattern>/*</url-pattern></servlet-mapping></web-app>其中,<context-param>指定了spring的相应配置,在<param-value>中指定了配置文件的位置;<servlet-mapping>下的<url-pattern>指明了服务访问时地址的形式,“/*”代表URL地址中,包名称后直接跟服务endpoint地址,若指明<url-pattern>为“/webservice/*”,则URL为包名/ webservice/endpoint?wsdl。

WebService接口实例说明文档

WebService接口实例说明文档

WebService接口说明文档文档说明本文档主要讲述如何用C Sharp创建一个简单的Web Service接口,并使用Java调用这个Web Service接口。

准备工作系统环境:安装JDK1.6或更新版本开发工具:Microsoft Visual Studio 2012、MyEclipse 10.5、axis2-1.6.2C Sharp服务端1.首先,创建一个Web Service项目。

依次点击:文件—新建—项目,在弹出的新建项目窗口中选择Web下的 空 Web 应用程序。

如下图:2.接下来我们需要创建我们的Web Service接口实现文件。

鼠标右击我们的项目,依次点击:添加—新建项,在弹出窗口中选择Web 服务。

可修改新建项的文件名,注意文件名后缀后.asmx。

如下图:新建完成后我们的项目结构如下:3.打开我们新建的MyService.asmx下的MyService.asmx.cs文件,可以看到其中已经有默认的HelloWorld方法。

我们可以直接运行查看下运行的效果,效果如下图:点击HelloWorld,再点击调用可以看到页面返回:4.接下来我们完善我们的Web Service接口功能。

主要对Web Service接口进行参数类型的测试,文本型、布尔型、数值型、类(Class)等。

新增Add()等运算方法:新增strcat()连接字符串方法:新增GetBool()返回布尔值方法:新增GetTest()返回测试类,并新增Test类运行我们的项目,可以看到我们的结果如下图:点击add方法测试:输入add的参数i和j点击调用按钮,可以看到返回计算结果:5.到此为止我们C Sharp创建的Web Service程序完成。

接下来看Java如何调用我们的Web Service接口。

Java调用Web Service准备对于一个Web Service接口我们当前只知道访问的地址,我们如何用Java去访问接口呢?已知Web Service接口地址:http://localhost:11766/MyService.asmx?WSDLJava调用Web Service的方式有以下1.使用HttpClient2.使用Xfire3.使用axis2本文档示例选择的是axis2,首先到axis2网站下载axis2,网址:/axis2/java/core/download.cgi当前最新版本1.6.2。

webservice使用教程

webservice使用教程
据说,XFire确实比Axis2简单很多
AXIS VS CXF
在SOA领域,我们认为Web Service是SOA体系的构建单元(building block)。对于作过WebService的开发人员来说,AXIS和CXF一定都不会陌生。这两个产品都是Apache孵化器下面的Web Service开源开发工具。 Axis2的最新版本是1.3,CXF现在已经到了2.0版本。
比较这两个框架的Web Service开发方法与比较它们的特性同样重要。 从开发者的角度,两个框架的特性相当的不同。 Axis2的开发方式类似一个小型的应用服务器,Axis2的开发包要以WAR的形式部署到Servlet容器中,比如Tomcat,通过这些容器可以对工作中的Web Service进行很好的监控和管理。Axis2 的Web administrion模块可以让我们动态的配置Axis2.一个新的服务可以上载,激活,使之失效,修改web服务的参数。管理UI也可以管理一个或者多个处于运行状态的服务。这种界面化管理方式的一个弊端是所有在运行时修改的参数没有办法保存,因为在重启动之后,你所做的修改就会全部失效。
22. </servlet-mapping>
23.
24.</web-app>
<?xml version="1.0" encoding="GB2312">
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
.pansky.webservice.xfire.study
,在这个包下面新建一个接口:

eclipse根据wsdl文件生成webservice客户端-图例

eclipse根据wsdl文件生成webservice客户端-图例

eclipse根据wsdl文件生成webservice客户端一、前期准备: (1)1、配置log4j (1)2、log4j使用jar包: (2)3、wsdl使用jar包: (2)二、开始生成文件: (2)一、前期准备:1、配置log4j没有配置的场合提示下列的信息(可以不配置):(log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle).log4j:WARN Please initialize the log4j system properly.Error: Missing argument to option -p)log4j.properties文件内容:log4j.rootLogger=info,stdout,R######################### Console Appender#######################log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%X{LKV}%d{yyyy-MM -dd HH:mm:ss,SSS}%c%t%L%p-%m%n######################### File Appender#######################log4j.appender.R=org.apache.log4j.DailyRollingFileAppender#log4j.appender.R.File=${WORKDIR}/TestWebService/WebRoot/logs/out.log#log4j.appender.R.File=${catalina.home}/WebRoot/logs/out.loglog4j.appender.R.File=D:/logs/TestWebService.loglog4j.appender.R.DatePattern = '.'yyyy-MM-ddyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%X{LKV}%d{yyyy-MM-dd HH:mm:ss,SSS}%c%t%L%p-%m%n######################### log level#######################.ibatis=debugmon.jdbc.SimpleDataSource=debugmon.jdbc.ScriptRunner=debug.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=d ebuglog4j.logger.java.sql.Connection=debuglog4j.logger.java.sql.Statement=debuglog4j.logger.java.sql.PreparedStatement=debug,stdoutlog4j.logger.java.sql.PreparedStatement=debug,stdout,R.jiahelife=debug.jiahelife.platform=error2、log4j使用jar包:log4j-1.2.8.jarcommons-discovery-0.2.jarcommons-logging.jar3、wsdl使用jar包:axis.jarwsdl4j-1.5.1.jar二、开始生成文件:具体操作如下图:然后点击Search按钮进入如下的画面,在输入框中输入WSDL2Java点击【OK】按钮进入下图:点击Arguments 的页面,进行如下设置: 12说明:1、WSDL文件生成的XML文件2、XML文件所在工作目录,以及生成后java文件的存放目录。

java-webService(调用wsdl接口)

java-webService(调用wsdl接口)

java-webService(调⽤wsdl接⼝)使⽤Axis或XFire实现WebService:Axis2是Apache下的⼀个重量级WebService框架,准确说它是⼀个Web Services / SOAP / WSDL 的引擎,是WebService框架的集⼤成者,它能不但能制作和发布WebService,⽽且可以⽣成Java和其他语⾔版WebService客户端和服务端代码。

这是它的优势所在。

但是,这也不可避免的导致了Axis2的复杂性,使⽤过的开发者都知道,它所依赖的包数量和⼤⼩都是很惊⼈的,打包部署发布都⽐较⿇烦,不能很好的与现有应⽤整合为⼀体。

但是如果你要开发Java之外别的语⾔客户端,Axis2提供的丰富⼯具将是你不⼆的选择。

XFire是⼀个⾼性能的WebService框架,在Java6之前,它的知名度甚⾄超过了Apache的Axis2,XFire的优点是开发⽅便,与现有的Web整合很好,可以融为⼀体,并且开发也很⽅便。

但是对Java之外的语⾔,没有提供相关的代码⼯具。

XFire后来被Apache收购了,原因是它太优秀了,收购后,随着Java6 JWS的兴起,开源的WebService引擎已经不再被看好,渐渐的都败落了。

参考路径:axis2:参考路径:private static Object[] requestFunctionWebService(String url,String parameters,String namespance,String methodName) {try {RPCServiceClient rpcServiceClient = new RPCServiceClient();EndpointReference endpointReference = new EndpointReference(url);//url后缀不加"?wsdl"Options options = rpcServiceClient.getOptions();options.setTimeOutInMilliSeconds(30000);options.setProperty(HTTPConstants.SO_TIMEOUT, 30000);options.setTo(endpointReference);rpcServiceClient.setOptions(options);QName qName = new QName(namespance, methodName);Class[] classStr = new Class[] {String.class};Object[] params = new Object[] {parameters};Object[] objects = rpcServiceClient.invokeBlocking(qName,params,classStr);return objects;} catch (Exception e) {logger.error("requestFunctionWebService请求接⼝异常:"+ e.toString());return null;}}CXF:参考路径:添加依赖: <dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxws</artifactId><version>3.1.16</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-transports-http-jetty</artifactId><version>3.1.16</version></dependency>public static Object[] getService(String url,String parameters, String namespace,String methodName) {try {String newUrl =url+"?wsdl";JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();Client client = dcf.createClient(newUrl);QName name=new QName(namespace, methodName);Object[] params = new Object[] {parameters};return client.invoke(name,params);} catch (Exception e) {logger.error(e);return null;}}XFire:参考路径:①通过WSDL地址来创建动态客户端②通过服务端提供的接⼝来创建客户端③使⽤Ant通过WSDL⽂件来⽣成客户端第⼀种⽅式:通过WSDL地址来创建动态客户端package com.jadyer.client;import .MalformedURLException;import .URL;import org.codehaus.xfire.client.Client;/*** 通过WSDL来创建动态客户端* @see此时需要在项⽬中引⼊XFire 1.2 Core Libraries和XFire 1.2 HTTP Client Libraries*/public class ClientFromWSDL {public static void main(String[] args) throws MalformedURLException, Exception {Client client = new Client(new URL("http://127.0.0.1:8080/XFire_demo/services/XFireServer?wsdl")); Object[] results11 = client.invoke("sayHello", new Object[]{"Jadyer22"});System.out.println(results11[0]);}}第⼆种⽅式:通过服务端提供的端⼝来创建客户端package com.jadyer.client;import .MalformedURLException;import java.util.List;import org.codehaus.xfire.client.XFireProxyFactory;import org.codehaus.xfire.service.Service;import org.codehaus.xfire.service.binding.ObjectServiceFactory;import com.jadyer.model.Person;import er;import com.jadyer.server.HelloService;/*** 通过Web服务端提供的接⼝来创建客户端* @see客户端必须提供⼀个与服务端完全⼀致的接⼝,包名也要⼀致* @see在本例中,需要在客户端(即该项⽬)中提供HelloService.java接⼝,以及Person和User两个POJO类 * @see并且此时需要在项⽬中引⼊XFire 1.2 Core Libraries和XFire 1.2 HTTP Client Libraries*/public class ClientFromInterface {public static void main(String[] args)throws MalformedURLException{//⾸先使⽤XFire的ObjectServiceFactory从HelloService接⼝创建⼀个服务模型serviceModel//serviceModel包含服务的说明,换句话说,就是服务的元数据//Create a metadata of the serviceService serviceModel = new ObjectServiceFactory().create(HelloService.class);//访问的地址String serviceURL = "http://127.0.0.1:8080/XFire_demo/services/XFireServer";//通过查看org.codehaus.xfire.client.XFireProxyFactory源码发现//下⾯两⾏代码与这⾥直接new XFireProxyFactory()的作⽤是等效的//XFire xfire = XFireFactory.newInstance().getXFire();//XFireProxyFactory factory = new XFireProxyFactory(xfire);//为XFire获得⼀个代理⼯⼚对象//Create a proxy for the deployed serviceXFireProxyFactory factory = new XFireProxyFactory();//通过proxyFactory,使⽤服务模型serviceModel和服务端点URL(⽤来获得WSDL)//得到⼀个服务的本地代理,这个代理就是实际的客户端HelloService client = (HelloService)factory.create(serviceModel, serviceURL);/*** Invoke the service* @see调⽤服务的本地代理(即实际的客户端)中的⽅法,便得到我们需要的WebServcie*//*--处理简单对象--*/String serviceResponse = client.sayHello("Jadyer11");System.out.println(serviceResponse);/*--处理对象--*/User u = new User();u.setName("Jadyer99");Person pp = client.getPerson(u);System.out.println(pp.getName());/*--处理List--*/List<Person> personList = client.getPersonList(24, "Jadyer88");for(Person p : personList){System.out.println(p.getName());}}这是它要⽤到的接⼝和两个POJO类/*** Web服务提供给客户端的接⼝* @see这是第⼆种⽅式创建的客户端,要⽤到的接⼝*/package com.jadyer.server;import java.util.List;import com.jadyer.model.Person;import er;public interface HelloService {public String sayHello(String name);public Person getPerson(User u);public List<Person> getPersonList(Integer age, String name);}/*** 第⼆种⽅式创建的客户端,要⽤到的两个POJO类*/package com.jadyer.model;public class User {private String name;/*--getter和setter略--*/}package com.jadyer.model;public class Person {private Integer age;private String name;/*--getter和setter略--*/}Axis:Java WebService接⼝⽣成和调⽤:参考路径:调⽤:引⽤jar包:axis.jar 、jaxrpc.jar⼀、使⽤eclipse⾃动⽣成的wsdl接⼝1、2、3、调⽤接⼝private static String requestFunctionWebService(String http,String message) { //http="http://203.48.27.97:85/dagl/service/TDHYxService?wsdl"String retMessage = "";try {YxBrowseWSProxy yx = new YxBrowseWSProxy(http);retMessage = yx.yxBrowse(message);//⽅法名yxBrowse} catch (Exception e) {logger.error("requestFunctionWebService请求接⼝异常:"+ e.getMessage());e.printStackTrace();}return retMessage;}⼆、直接AXIS调⽤远程的web serviceimport java.util.Date;import java.text.DateFormat;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import space.QName;import ng.Integer;import javax.xml.rpc.ParameterMode;public class caClient {public static void main(String[] args) {try {String endpoint = "http://localhost:8080/ca3/services/caSynrochnized?wsdl";//直接引⽤远程的wsdl⽂件//以下都是套路Service service = new Service();Call call = (Call) service.createCall();call.setTargetEndpointAddress(endpoint);call.setOperationName("addUser");//WSDL⾥⾯描述的接⼝名称call.addParameter("userName", org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);//接⼝的参数call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型 String temp = "测试⼈员";String result = (String)call.invoke(new Object[]{temp});//给⽅法传递参数,并且调⽤⽅法System.out.println("result is "+result);}catch (Exception e) {System.err.println(e.toString());}}}。

webservice实现有多种方式

webservice实现有多种方式

webservice实现有多种方式比如最常用的有axis框架,xfire框架,通过该框架可以发布wsdl接口,也可以实现webservice客户端,目前eclipse都有集成的插件,可以根据wsdl文件生成webservice客户端调用接口,但是这样部署的时候必须依赖框架的jar包,有时候可能因为环境等等原因,我们仅仅需要wsdl中的某一个接口,这时候可以通过http接口或socket接口直接发生xml 数据,来调用服务端webservice服务,其实webservice底层还是发送xml数据,只是框架封装了对xml数据进行序列化与反序列化操作,下面以两个简单的例子说明http方式和socket方式。

http实现webservice接口调用例子:[c-sharp]view plain copy1.import <a href="/base/17"class='replace_word' title="Java EE知识库" target='_blank' style='color:#df3434; font-weight:bold;'>Java</a>.io.Buffe redReader;2.import java.io.IOException;3.import java.io.InputStreamReader;4.import java.io.OutputStreamWriter;5.import java.io.UnsupportedEncodingException;6.import .MalformedURLException;7.import .URL;8.import .URLConnection;9.10.public class HttpPostTest {11.void testPost(String urlStr) {12.try {13. URL url = new URL(urlStr);14. URLConnection con = url.openConnection();15. con.setDoOutput(true);16. con.setRequestProperty("Pragma:", "no-cache");17. con.setRequestProperty("Cache-Control", "no-cache");18. con.setRequestProperty("Content-Type", "text/xml");19.20. OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream());21. String xmlInfo = getXmlInfo();22.out.write(new String(xmlInfo));23.out.flush();24.out.close();25. BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));26. String line = "";27. StringBuffer buf = new StringBuffer();28.for (line = br.readLine(); line != null; line = br.readLine()) {29. buf.append(new String(line.getBytes(),"UTF-8"));30. }31. System.out.println(buf.toString());32. } catch (MalformedURLException e) {33. e.printStackTrace();34. } catch (IOException e) {35. e.printStackTrace();36. }37. }38.39.private String getXmlInfo() {40.// 通过wsdl文件可以查看接口xml格式数据,构造调用接口xml数据41. String xml = "<SOAP-ENV:Envelope xmlns:SOAP-ENV=/"http://schemas.xml/soap/envelope//" xmlns:SOAP-ENC=/"/soap/e ncoding//" xmlns:xsi=/"/2001/XMLSchema-instance/" xmlns:xsd =/"/2001/XMLSchema/">"42. + "<SOAP-ENV:Body>"43. + "<m:getItemDetailSingle xmlns:m=/"http:xxxxxxxxxxxxxxxxxx//">"44. + "<itemMo>"45. + "<category>工厂类</category>"46. + "<city>北京</city>"47. + "<flag>1</flag>"48. + "<itemId>0</itemId>"49. + "<itemIndex>1</itemIndex>"50. + "<keyword></keyword>"51. + "<mobile>2147483647</mobile>"52. + "<password>123456</password>"53. + "<userName>sohu</userName>"54. + "</itemMo>"55. + "</m:getItemDetailSingle>"56. + "</SOAP-ENV:Body>"57. + "</SOAP-ENV:Envelope>";58.return xml;59. }60.61.public static void main(String[] args) throws UnsupportedEncodingException {62. String url = "http://localhost:9003/dataService/services/Job";63.new HttpPostTest().testPost(url);64. }65.}socke方式实现例子:[c-sharp]view plain copy1.import java.io.IOException;2.import java.io.InputStream;3.import java.io.InputStreamReader;4.import java.io.OutputStream;5.import .Socket;6.import .UnknownHostException;7.8.9.public class WebServiceClient {10.11./**12. * @param args13. * @throws IOException14. * @throws UnknownHostException15. */16.public static void main(String[] args) throws UnknownHostException, IOException {17. Socket socket = new Socket("localhost",9003);18. OutputStream os = socket.getOutputStream();19. InputStream is = socket.getInputStream();20.//System.out.println(socket.isConnected());21. String httpSend = "POST /dataService/services/Job HTTP/1.1/r/n"22. + "Content-Type:text/xml/r/n"23. + "Host:localhost:9003/r/n"24. + "Content-Length:1024/r/n"25. + "/r/n"26. + "<SOAP-ENV:Envelope xmlns:SOAP-ENV=/"http://schema/soap/envelope//" xmlns:SOAP-ENC=/"/s oap/encoding//" xmlns:xsi=/"/2001/XMLSchema-instance/" xmln s:xsd=/"/2001/XMLSchema/">"27. + "<SOAP-ENV:Body>"28. + "<m:getItemDetailSingle xmlns:m=/"http://localhost//">"29. + "<itemMo>"30. + "<category>工厂类</category>"31. + "<city>北京</city>"32. + "<flag>1</flag>"33. + "<itemId>0</itemId>"34. + "<itemIndex>1</itemIndex>"35. + "<keyword>String</keyword>"36. + "<mobile>2147483647</mobile>"37. + "<password>123456</password>"38. + "<userName>sohu</userName>"39. + "</itemMo>"40. + "</m:getItemDetailSingle>"41. + "</SOAP-ENV:Body>"42. + "</SOAP-ENV:Envelope>";43. os.write(httpSend.getBytes());44. os.flush();45.46. InputStreamReader ireader = new InputStreamReader(is);47. java.io.BufferedReader breader = new java.io.BufferedReader(ireader);48.49. String responseLine = "";50.51.while((responseLine = breader.readLine()) != null)52. {53. System.out.println(new String(responseLine.getBytes(),"UTF-8"));54. }55.56. System.out.println("");57.58. }59.60.}。

XFire 1.2.6调用Web Service的几种方法

XFire 1.2.6调用Web Service的几种方法

XFire 1.2.6调用Web Service的几种方法最近由于项目的需求,我开始学习XFire 1.2.6。

XFire的服务发布很简单,但由于xfire为用户提供了多种调用(invoke) web service的方法,所以在编写客户端代码的时侯,需要我们做一番斟酌。

在不同的应用环境下,我们可能需要采用不同的服务调用的方法。

本文将详细介绍这几种调用web服务的方法。

方法一:动态客户端(Dynamic Client)这是一种最简单的web服务调用方法。

具体过程如下:1.创建一个服务代理,其中url为调用服务的wsdl地址。

Client client = new Client(new URL(url));2.调用web服务,输入参数(简单类型)。

Object[] results = client.invoke(methodName, new Object[]{param1,param2});3.打印web 服务运行结果System.out.println((ReturnValueType)results[0]);全过程只需要三个过程,非常简单。

但是,上述过程仅限于简单的方法调用,对于那些以复杂数据结构为参数的方法,以及复杂结构的返回值的方法,需要采用另外的处理方法,否则将无法正常运行。

关于复杂参数的传递以及调用复杂返回值方法的过程还有待进一步研究,如果哪个读者熟悉这一块,可以与我联系,本人将非常感谢。

方法二:代理工厂方法(Proxy Factory)一般的方法如如下:1.创建一个服务实例,就像在自己的服务器上创建一样。

要注意的是,这里的“”Service serviceModel = new ObjectServiceFactory().create(YourService.class);要注意的是,这里的“YourService”是接口类,而不是接口的实现类。

2.定义服务URLString serviceURL = “http://localhost:8080/XFireTest/services/YourService”;3.为服务创建一个代理YourService client = (YourService) new XFireProxyFactory().create(serviceModel,serviceURL);4.使用代理访问服务提供的方法String name = (String) client.getName();如果已经知道调用的服务在本地时,我们可以采取下面方法(本地传输)来调用,这种方法可以提高调用服务的速度,减少调用服务的延迟时间。

eclipse创建webservice的两种方法

eclipse创建webservice的两种方法

在eclipse 中创建webservice项目方法一:使用xfire支持1.创建Dynamic Web Project 项目:2.将编译路径改为项目/web-INF/classes;3.将META-INF 文件夹移动到src下面,并在META-INF 中创建xfire文件夹,文件夹内放入services.xml文件;4.添加xfire支持的jar包:5.编写web.xml:7.编写services.xml可以存在多个service;8.访问http://localhost:port/projectName/services/url-pattern?wsdl(蓝色字体均为相应的内容);方法二:使用Axis2支持1.1Axis2发行包Axis2以多个发行包发行。

你需要哪个视你所需决定。

1.1.1标准二进制发行包如果你正在开发服务和应用程序,你需要Axis2标准二进制发行包。

这个发行包包括所有必要的*.jar文件,以及很多便于开发用的脚本。

它具有以下结构。

Axis2标准二进制发行包目录的结构binaxis2.bataxis2.shaxis2server.bataxis2server.shjava2wsdl.batjava2wsdl.shwsdl2java.batwsdl2java.shsetenv.shlibactivation-1.1.jar...XmlSchema.jarrepositorymodulesmodules.listaddressing-1.1.mar...servicesservices.listversion.aar...samples...webapp...confaxis2.xmlLICENSE.txtREADME.txtNOTICE.txtINSTALL.txtrelease-notes.htmlbin目录包括一些有用的脚本。

它们包括axis2.bat(或者axis2.sh),这个文件可以让你在不手工添加Axis2 jar文件到类路径的情况下方便的执行Java命令;java2wsdl.bat(和.sh)和wsdl2java.bat(和.sh),它可以让你轻易的从一个WSDL文件生成Java代码,反之亦然;axis2server.bat(和sh),一个简易Web服务器,它可以让你早自己的应用程序中搭建Axis2的功能来发送接收消息。

java用XFire调用webservice例子

java用XFire调用webservice例子

java用XFire开发调用webService例子XFire 概述XFire 是codeHaus 组织提供的一个开源框架,它构建了POJO 和SOA 之间的桥梁,主要特性就是支持将POJO 通过非常简单的方式发布成Web 服务,这种处理方式不仅充分发挥了POJO 的作用,简化了Java 应用转化为Web 服务的步骤和过程,也直接降低了SOA 的实现难度,为企业转向SOA 架构提供了一种简单可行的方式。

XFire 目前最新的版本是1.2.2,目前支持的特性主要包括:支持将Web 服务绑定到POJO、XMLBeans、JAXB1.1、JAXB2.0 和Castor;支持基于HTTP、JMS、XMPP 等多种协议访问Web 服务;支持多种Web 服务业界重要标准如SOAP、WSDL、Web 服务寻址(WS-Addressing)、Web 服务安全(WS-Security)等;支持JSR181,可以通过JDK5 配置Web 服务;高性能的SOAP 实现;服务器端、客户端代码辅助生成;对Spring、Pico、Plexus 等项目的支持等。

XFire 安装包XFire 框架目前的最新版本是1.2.6,可以访问 下载XFire 框架的安装包,下载时请选择“全部二进制发布包(Binary Distribution in zip package)”,而不仅仅是“XFire jar 文件(Jar of all XFire modules)”。

下载完成后,我们可以将下载的.zip 文件解压缩到任意的文件夹中(后面的章节中使用% XFIRE_HOME % 表示XFire 框架的安装目录),解压缩后形成的文件目录结构如下:api(目录)api 目录中是XFire 框架中所有类(class)对应的API 文档,为开发者使用XFire 完成应用开发提供帮助。

examples(目录)examples 目录中包含了所有随XFire 二进制包发布的实例,包括这些实例的源代码和相关Web 应用配置内容。

用XFire开发 WebService全教程

用XFire开发 WebService全教程

XFire开发WebServiceXFire简介:XFire是新一代的Java Web服务引擎,XFire使得在JavaEE应用中发布Web服务变得轻而易举。

和其他Web服务引擎相比,XFire的配置非常简单,可以非常容易地和Spring 集成,它使得Java开发人员终于可以获得和.Net开发人员一样的开发效率. 详细内容请看:/view/920041.htmlWebService简介:它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的web .应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。

Web Service是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问Web Service,通过Web Service内部执行得到所需结果.Web Service可以执行从简单的请求到复杂商务处理的任何功能。

一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。

具体内容请访问:/view/837392.html开发环境:JDK 1.6;MyEclipse8.5;tomcat 6.0;Windows XP;XFire1.2接下来我们看怎么用XFire来构建一个webservice服务端。

1.创建工程打开MyEclipse 8.5,新建一个WebService工程。

如下图Webservice服务端名称Webservice服务路径什么都不用改动services.xml2.创建webserice服务.MyServiceTestImpl.java代码如下:Service.xml配置文件如下:3.测试服务端测试服务器我们采用Tomcat, 需要将做好的服务端打包部署到tomcat上,然后启动. 在进行测试.可以看到,我们服务端提供了一个名叫“sayHello”的接口.我们点击这个方法名.在下面填入字符串. 点击GO如下这样服务端就返回一个字符串. 说明我们服务端测试通过.4.创建客户端代码创建客户端可以用MyEcilse自带的创建客户端方式.去创建. 比较简单. 傻瓜式操作.这里我就不在示范. 我采用手写的方式写一个客户端.这样有助于大家理解.也能加深记忆.(1)创建一个工程. MyserviceCilent 添加XFire架包. 工程架构如下.(2)创建接口实现类.IMyServiceTest.java. 源码如下:package service.client;//Generated by MyEclipsepublic interface IMyServiceTest {public String sayHello(String user);}MyServiceTestImpl.java 源码如下:package service.client;//Generated by MyEclipsepublic class MyServiceTestImpl implements IMyServiceTest { public String sayHello(String user) {return"您好,"+user;}}(3)写测试类.ClientTest.java 源码如下:public static void main(String [] args){Service serviceModel = newObjectServiceFactory().create(IMyServiceTest.class);XFire xfire = XFireFactory.newInstance().getXFire();XFireProxyFactory factory = new XFireProxyFactory(xfire); String serviceUrl ="http://10.222.22.97:8080/MyServiceTest/services/MyServiceTest";IMyServiceTest client = null;try {client = (IMyServiceTest) factory.create(serviceModel, serviceUrl);} catch (MalformedURLException e) {System.out.println("Client call webservice has exception: "+ e.toString());}String result1 =client.sayHello("张三");System.out.print(result1);}直接执行后会返回以下结果.5.现在一个简单的webservice已经开发完成. 当然有的同学会提出. 只可以传递字符串类型吗?当然不是. 后续我还为大家在写传递对象类型. 集合类型. 数组类型. 敬请期待.谢谢!有什么问题,可以联系我. 邮箱:zhubox1j7253@很高兴能和你探讨.。

(完整word版)e-cology工作流WebService接口使用说明

(完整word版)e-cology工作流WebService接口使用说明

e—cology工作流接口使用白皮书SUBMITED BY WEA VER文档版本历史目录一、前言 (4)1。

1编写目的 (4)1。

2名词定义 (4)二、接口调用步骤 (5)2.1 Ecology系统流程接口部署 (5)2。

2表单字段 (6)2.3检查ecology web service是否已部署 (7)2.4接口方法概述 (8)2.5 流程相关对象说明 (14)2。

6 生成客户端 (24)三、示例程序 (28)3.1创建带附件的留言 (28)3。

2 使用客户端代理创建留言 (28)3。

3 使用客户端查询留言 (33)3.4 使用客户端实现流程转发 (34)3.5 使用客户端实现流程提交 (36)3。

6 使用客户端实现流程退回 (37)3.7 使用客户端获得待办列表 (38)3。

8 使用客户端获得已办列表 (40)3。

9 使用客户端获得办结列表 (41)3.10 使用客户端获得我的请求列表 (43)一、前言1。

1编写目的本文给有研发能力的客户或有系统集成需求的客户提供web service接口调用的参考例程。

本文的面向具有一定web service开发能力或了解web service技术的开发人员。

1。

2名词定义1、Axis:著名的开源web service引擎.2、外部系统:指调用或实现e-cology工作流输入输出接口,与e—cology系统进行数据交接的其他系统。

二、接口调用步骤2.1 Ecology系统流程接口部署1.更新lib目录下文件将spring.jar更新为spring—1。

2。

6。

jar将xfire-all—1.1.2.jar更新为xfire—all-1。

2。

6.jar添加xbean—spring-2。

8。

jar文件2.修改/WEB-INF/web.xml文件在相应处增加servlet部署(参考系统中已有很多servlet部署),加入如下描述〈servlet〉〈servlet-name〉XFireServlet</servlet—name>〈servlet-class〉org。

webservice调用具体方法

webservice调用具体方法

webservice调用具体方法摘要:1.什么是WebService2.如何调用WebService的具体方法3.调用过程中可能遇到的问题及解决方法4.实战案例分享正文:WebService,即网络服务,是一种跨平台的、基于XML(可扩展标记语言)的分布式计算技术。

它使得应用程序之间可以通过互联网进行通信,实现数据的交换和共享。

在实际开发中,调用WebService的具体方法如下:1.首先,确定你需要调用的WebService的地址和协议。

通常,WebService的地址是以WSDL(Web服务描述语言)文件形式提供的。

你可以通过WSDL文件查看WebService提供的接口和方法。

2.根据WSDL文件,生成客户端代码。

这可以通过使用诸如Apache CXF、JAX-WS等开源库来实现。

这些库会根据WSDL文件自动生成客户端代码,包括调用WebService的方法和处理响应的代码。

3.在生成的客户端代码中,找到调用WebService的具体方法。

这个方法通常是一个带有HTTP请求头的Web方法,如POST、GET等。

在方法中,传入所需的参数,这些参数通常包括在WSDL文件中定义的输入参数。

4.发送HTTP请求,并将响应结果解析为JSON、XML等格式。

这一步可以通过使用如Jackson、Gson等库来实现。

5.处理响应结果,并根据需要进行相应的业务逻辑处理。

在调用WebService的过程中,可能会遇到以下问题:1.网络问题:由于WebService通常跨网络调用,因此可能会遇到网络不稳定、延迟等问题。

为了解决这个问题,可以考虑使用重试策略、增加超时设置等方法。

2.服务异常:WebService可能会因为各种原因抛出异常,如参数不合法、服务器故障等。

为了解决这个问题,可以实现异常处理机制,如使用try-catch语句捕获异常,并根据需要进行日志记录、通知等操作。

3.身份验证和授权问题:为了避免unauthorized access,WebService 通常需要进行身份验证和授权。

java开发webservice的几种方式

java开发webservice的几种方式

java开发webservice的⼏种⽅式webservice的应⽤已经越来越⼴泛了,下⾯介绍⼏种在Java体系中开发webservice的⽅式,相当于做个记录。

1.Axis2⽅式Axis是apache下⼀个开源的webservice开发组件,出现的算是⽐较早了,也⽐较成熟。

这⾥主要介绍Axis+eclipse开发webservice,当然不⽤eclipse也可以开发和发布webservice,只是⽤eclipse会⽐较⽅便。

(1)下载eclipse的Java EE版本(2)下载axis2(3)下载eclipse的axis2插件Axis2_Codegen_WizardAxis2_Service_Archiver推荐使⽤1.3的版本(4)eclipse安装axis2插件1)在任意⽬录下新建⼀个Axis2⽂件夹,在该⽂件夹下新建eclipse⽬录,在eclipse⽬录中新建plugins⽬录和features⽬录,例如:D:\programSoftware\eclipse-SVN\Axis2\eclipse;2)把下载的axis2插件解压,并把解压的⽂件放到新建的eclipse的plugins⽬录下;3)在%eclipse_home%的⽬录下新建links⽬录,并在links⽬录下新建axis2.link⽂件,内容为:path=D:\programSoftware\eclipse-SVN\Axis2; 4)重启eclipse,点击·file-new-other,如果看到Axis2 Wizards,则表明插件安装成功。

(5)安装axis2(6)使⽤eclipse新建web⼯程,创建⼀个普通java类,⾄少包含⼀个⽅法。

(7)发布webservice1)点击eclipse的File-New-other,打开Axis2 Wizards,选择Axis2 Service Archiver,然后Next;2)选择Class File Location,也就是类⽂件存放路径,注意:只选到classes⽬录,不要包括包⽂件夹,然后Next;3)选择Skip WSDL,然后Next4)⼀路Next到Select the Service XML file to be included in the Service archive,勾选Generate theservice xml automatically;5)Service Name-填写你的service名称,Class Name-填写类名称,要包括包名,然后点击load,然后点击Finish,这时webservice就发布成功了;6)然后到%TOMCAT_HOME%/webapps/axis2/WEB-INF/services 看看是否多了⼀个.aar的⽂件;注意:以上的⽅式是发布到axis2.war包中,你也可以把⽣成.aar⽂件copy到你的实际应⽤中,同时,你也可以使⽤eclipse的create webservice 功能发布你的webservice,选择axis2⽣成你的webservice,这样webservice就会部署到你的应⽤中了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在Eclipse上使用XFire开发WebServiceWeb Service概述什么是Web ServiceWeb Service是能够基于网络,尤其是基于万维网(World Wide Web)直接调用的能够处理离散任务或连续任务的软件模型。

目前较为流行的应用是,由一家公司对其专有数据进行封装,提供Web Service,然后其它公司就可以通过Internet来动态使用这些在线服务。

这为未来全球的电子商务发展提供了新的标准和架构。

Web Service架构Web Service是独立的、模块化的应用,能够通过因特网来描述、发布、定位以及调用。

在Web Service的体系架构中包括三个角色:服务提供者(Service Provider)、服务请求者(Service Requestor)、服务注册器(Service Registry)。

角色间主要有三个操作:发布(Publish)、查找(Find)、绑定(Bind)。

下图清楚的描述了三种角色,以及角色之间的作用关系。

图示一:图示二:这个流程图显示了Web Services中的核心技术是如何工作的。

这里,Provider是提供服务的应用程序组件,Requester是使用服务的客户端程序。

很多其他技术也会参与到交互中,但是这个图只显示了在Web Services环境中必需的核心技术组件。

Web Service协议标准简单对象访问协议(SOAP)SOAP是Simple Object Access Protocol的缩写,是一种基于XML的不依赖传输协议的表示层协议,用来在分散或分布式的应用程序之间方便地以对象的形式交换数据。

在SOAP的下层,可以是HTTP/HTTP,也可以是SMTP/POP3,还可以是为一些应用而专门设计的特殊的通信协议。

SOAP包括三个主要部分:²SOAP封装结构:定义了一个整体框架,以表示消息中包含什么内容,谁来处理这些内容以及这些内容是可选的或是必需的。

²SOAP编码规则:定义了用以交换应用程序定义的数据类型的实例的一系列机制。

²SOAP RPC表示:定义了一个用来表示远程过程调用和应答的协定。

Web Service描述语言(WSDL)WSDL是Web Service Des cription Language的缩写,该语言将网络服务定义成一个能交换消息的通信端点集,为分布式系统提供了帮助文档,同时也可作为自动实现应用间通信的解决方案。

统一描述、发现和集成协议(UDDI)UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。

以上概念转自/Article/203/207/2005/2005082532541.htmlXFireXFire是一个免费的开源SOAP框架,它不仅可以极大方便地实现这样一个环境,并且可以提供许多Web Services规范中高级特征,这些特征在多数的商业或者开源工具都没有提供。

/Download是它的官方网站下载区,同时你也可以了解关于它的更多内容。

创建过程示例下面我们就来使用Java构建一个WebService并且构建一个客户端来测试访问它。

首先请确保你的JDK和Tomcat在Eclipse环境中是可用的,配置方法不做赘述。

并且你了解一些java 编程技术和tomcat的发布常识。

版本信息:MyEclipse6.0.0M1;Tomcat6.0;JDK1.5;Xfire1.21、打开MyEclipse新建一个WebService Project,为你的项目命名,我选择了Java EE5.0,项目在你的WorkSpace目录下。

下一步:看到了这个界面在这里Eclipse为你创建了webService的配置文件services.xml(主意文件名是有“s”的),并进行了Xfire 的Servlet基本配置告诉项目你使用了Xfire改信息将体现在项目的web.xml文件中。

继续下一步,加载Xfire相关的jar包,你看到了在这个项目里我勾选了Xfire1.2 Core Libraries;HTTP Client Libraries;XML Beans Libraries。

主要是确保引入了这些包包:∙? activation-1.0.2.jar∙? commons-codec-1.3.jar∙? commons-httpclient-3.0.jar∙? commons-logging-1.0.4.jar∙? jaxen-1.1-beta-8.jar∙? jdom-1.0.jar∙? log4j-1.2.x.jar∙? mail-1.3.3_01.jar∙? spring-1.2.x.jar∙? stax-api-1.0.jar∙? wsdl4j-1.5.2.jar∙? wstx-asl-2.9.jar∙? xbean-2.1.0.jar∙? xbean-spring-2.2.jar∙? xfire-all-1.0.jar∙? XmlSchema-1.0.jar如果你好奇其他的包包是做什么用的就有待于我们在今后的学习中继续探究了~点击“Finish”完成了项目创建。

目录结构如下图所示:打开web.xml我们可以看到如下片断:xml 代码1. <servlet>2. <servlet-name>XFireServlet</servlet-name>3. <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>4. <load-on-startup>0</load-on-startup>5. </servlet>6. <servlet-mapping>7. <servlet-name>XFireServlet</servlet-name>8. <url-pattern>/services/*</url-pattern>9. </servlet-mapping>10. <welcome-file-list>11. <welcome-file>index.jsp</welcome-file>12. </welcome-file-list>13.接下来的工作是开始编写java类接下来我们要写一个服务端java类。

模拟应用是一个银行转账应用,从账户A转账到账户B并需要给出金额和货币种类。

我们先来实现一个接口IBankingService.java代码全文如下:java 代码1. package com.mybank.xfire.example;2.3. public interface IBankingService {4.5. public String transferFunds(6. String fromAccount, String toAccount, double amount, String currency);7.8. }9.然后编写一个普通的Java类BankingService包含了一个叫做transferFunds()的方法来为我们完成这项工作。

它需要四个输入参数:∙1、String fromAccount∙2、String toAccount∙3、double amount∙4、String currency代码如下:java 代码1. package com.mybank.xfire.example;2.3. import java.text.NumberFormat;4. import java.text.DecimalFormat;5.6. public class BankingService implements IBankingService {7.8. //Default constructor.9. public BankingService(){10. }11.12. /** Transfers fund from one account to another.13. */14. public String transferFunds(15. String fromAccount, String toAccount, double amount, String currency){16.17. String statusMessage = "";18.19. //调用业务逻辑执行操作.20. //建立并返回状态信息.21. try {22. NumberFormat formatter = new DecimalFormat("###,###,###,###.00");23. statusMessage = "COMPLETED: " + currency + " " + formatter.format(amount)+24. " was successfully transferred from A/C# " + fromAccount + " to A/C# " + toAccount;25. } catch (Exception e){26. statusMessage = "BankingService.transferFunds(): EXCEPTION: " + e.toString();27. }28. return statusMessage;29. }30.31. }32.你可以看到BankingService是一个普通的Java类,没有任何代码告诉我们它将会在Web Services中使用。

只是要有默认的构造函数,类型是public。

这是必须的。

否则,XFire不能够初始化这个类。

好的,这里我们不需要增加任何东西。

我们所有的工作都在部署描述符里完成。

Web应用的部署描述符在Java中,Web应用程序通常需要至少一个部署描述符(叫做web.xml)对其进行配置。

XFire本身是一个基于servlet的应用程序。

因此,我们需要增加必要的引用到描述符文件中。

然后我们还必须配置将要创建的Web Services。

相关文档
最新文档