Webservice_axis_dev
Axis Web Service的搭建及使用
一、配置AXIS,并部署在tomcat首先下载axis 1..4版(注意是axis不是axis2,axis在06年就已不再更新),解压后目录结构如下:在环境变量中加入axis的配置假定axis目录为F:\ axis-1_4,环境变量配置如下:AXIS_HOME= F:\ axis-1_4AXIS_LIB=%AXIS_HOME%\libAXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery-0.2.jar;%AXIS_LIB%\com mons-logging-1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar;% AXIS_LIB%\wsdl4j-1.5.1.jar;注:在配置AXISCLASSPATH时不能偷懒,要把全名写上,不然找不到jar包。
此处以tomcat7.0为例来说明如何部署axis。
将webapps文件夹下面的axis文件夹拷贝到tomcat的webapps下面。
启动tomcat服务器,然后在地址栏输入http://localhost:8080/axis,根据tomcat配置修改主机名和端口号,界面如下:首先点击Validation,验证axis配置是否正确初始配置的话会提示少两个包,这些包不在axis的lib文件夹中,需要从网上下载。
将那两个包放到tomcat文件夹的\webapps\axis\WEB-INF\lib下面,然后重启服务器。
再次验证就正常了,如下:没有warning就可以了。
返回到主页,点击list可以查看到目前已经发布的web services,默认会有以下两个:二、简单的Web Services例子1.即时发布的Web Services现在开始编写简单的web service。
新建一个Test.java文件,内容如下package com.suning.test;public class Test {public String getTest(String mess){return"Hello,Web Service!"+mess;}}将文件名改为Test.jws,放到tomcat的webapps\axis\WEB-INF文件夹下面,这个文件添加不需要重启tomcat。
axiswebservice教程
利用AXIS开发Webservice(一) ——如何发布自己的webservice先介绍下本人开发环境吧。
JDK 1.4.2 + Myeclipse (实在经不起诱惑,尝尝鲜)+ Tomcat + AXIS 。
AXIS 包可以在找到。
假设所有的环境你已经搭好,并且AXIS包也已经下好了。
OK,Here we go~解压这个包可以看到webapps目录,双击进入把里面的AXIS文件夹拷到%TOMCA T_HOME%\webapps目录下,之后拷贝、、到%TOMCAT_HOME%\webapps\axis\WEB-INF\lib目录下。
启动tomcat,访问如果访问成功,恭喜你!基本的配置你已经做完了。
PS:此处的%TOMCAT_HOME%指的是Tomcat的安装目录,至于那另外的三个jar包,J2EE 库里就能找的到。
现在来说一下最关键的Webservice的发布。
AXIS提供了两种发布方式,一种是即时发布(Instant Deployment),另外一种是定制发布(Custom Deployment)。
即时发布提供了一种非常简单的webservice的发布方式,但是其中限制太多,因此在实际的开发中定制发布才是首选。
这里也将会以定制发布为重点来介绍。
1.即时发布JWS (Java Web Service) Files - Instant Deployment即时发布提供了一种非常简单发布方式,发布者只要有Java源代码(也就是.java文件),然后把其后缀名改成jws(也就是java web service的缩写)拷贝到%TOMCAT_HOME%\webapps\axis目录下即完成了所有的发布工作。
AXIS的编译引擎会处理接下来的所有事情。
下面是一段示例代码:java 代码public class HelloAXIS {public String Hello(String name){return "AXIS say hello to " + name;}}把文件改成然后拷贝到%TOMCAT_HOME%\webapps\axis目录下,启动Tomcat之后访问如果能看到Click to see the WSDL这个超链接就说明已经发布成功了,点击进去就可以看到这个Webservice的WSDL描述文件。
利用axis开发WebService(4)_下_如何抛出自定义异常
type="java:com.chnic.exception.NoSuchUserException"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
xmlns:fns="http://faults.samples"
class="samples.faults.NoSuchEmployeeFault"
type="tns:NoSuchUserFault"
encodingStyle="/soap/encoding/"/>
</service>
</deployment>
<deployment xmlns="/axis/wsdd/"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
Java代码
package com.chnic.test;
import java.rmi.RemoteException;
import space.QName;
import javax.xml.rpc.Call;
returnType="rtns:User"
使用axis实现webservice
使用axis实现Web Service一、实践过程1、在MyEclipse中新建一个testaxis应用工程,导入11个jar包文件后刷新testaxis应用工程,然后部署testaxis应用工程到Tomcat服务器中,截图如下:2、配置环境变量的信息CATALINA_HOME= C:\Tomcat_5_0AXIS_HOME= %CATALINA_HOME%\webapps\testaxis\WEB-INFAXIS_LIB=%AXIS_HOME%\libAXISCLASSPATH=%AXIS_LIB%\activation.jar;%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-disc overy-;%AXIS_LIB%\commons-logging-;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\log4j-;%AXIS_LI B%\mail.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\wsdl4j-;%AXIS_LIB%\xercesImpl.jar;%AXIS_ LIB%\xml-apis.jar3、确认testaxis应用的lib中包括上述的jar文件,包括文件名必须一样。
4、我要发布的服务是UserManage,待发布的java文件是UserManageInter.java和UserManageSoapBindingImpl.java,发布的方法是addPerson,JA V A代码如下:程序代码1:UserManageInter.javapackage ;import ;import ;public interface UserManageInter extends Remote {public void addUser(UserBean userBean) throws RemoteException;}程序代码2:UserManageSoapBindingImpl.javapackage ;import ;public class UserManageSoapBindingImpl implements UserManageInter{public void addUser( userBean) throws { return;}}//不用加处理代码程序代码3:UserBean.javapackage ;public class UserBean {private String ID;private String name;private String address;public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getID() {return ID;}public void setID(String id) {ID = id;}public String getName() {return name;}public void setName(String name) { = name;}}5、修改testaxis应用的web.xml文件,增加相关内容<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "/web-app_2_3.dtd"><web-app><display-name>Apache-Axis</display-name><listener><listener-class></listener-class></listener><servlet><servlet-name>AxisServlet</servlet-name><display-name>Apache-Axis Servlet</display-name><servlet-class></servlet-class></servlet><servlet><servlet-name>AdminServlet</servlet-name><display-name>Axis Admin Servlet</display-name><servlet-class></servlet-class><load-on-startup>100</load-on-startup></servlet><servlet><servlet-name>SOAPMonitorService</servlet-name><display-name>SOAPMonitorService</display-name><servlet-class></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;/2003/WD-wsdl12-/#ietf-draftfor now we go with the basic 'it's XML' response --><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></web-app>6、重启应用,访问,应该可以看到目前系统所提供SOAP服务的列表,应该只有两个,都是自带的,(AdminService和Version),如图:7、根据deploy.wsdd 生成server-config.wsdd。
Axis开发WebService应用小结
Axis开发WebService应用小结1. 开发环境准备使用软件版本:JDK1.4.2,Weblogic8.1,axis1.4,Eclipse3.2。
JDK、Weblogic、Eclipse3.2准备过程略。
web-inf/lib目录中,还需要包括activation.jar和mail.jar,分别下载jaf-1.0.2和javamail-1.4.3,axis需要用到这2个jar中的类。
如图:2. Axis配置新建Web Project,在web.xml文件中添加如下配置加入axis:在/web-inf/目录下添加webServices.xml(可以指定其他目录,该文件为Axis与Spring集成所需要的文件,为程序了。
3. Axis服务端开发a.deployment为文档根节点,必须包括该节点,其中后面的属性不能更改。
b.配置handler节点,使用handler可以实现类似filter的功能,此处用到URLMapper和LocalResponder两个handlerc.每个WebServices服务都需要配置一个Service节点,name属性配置服务名称,provider属性配置服务访问方式,本例中是采用RPC方式;子节点parameter配置service的参数,参数wsdlTargetNamespace配置名称空间,参数className配置实现服务类,参数allowedMethods表示那些方法是WebServices服务可以调用的方法,“*”表示所有方法,可以配置多个方法,用“,”分隔。
Service可以通过增加requestFlow 节点引用某个handler,在service执行之前会先执行handler的invoke方法,可以通过handler实现一些数据验证或者访问合法性的校验。
d.Transport节点定义了服务端的传输方式,本例中定义了两个transport,http和local。
使用Axis+Eclipse开发webservice
使用Axis+Eclipse开发webservice什么是webservice?从架构师的角度来理解:webservice是一个软件系统,为了支持跨网络的机器间相互操作交互而设计。
Web Service服务通常被定义为一组模块化的API,它们可以通过网络进行调用,来执行远程系统的请求服务。
从一个程序员的视角来理解:在传统的程序编码中,存在这各种的函数方法调用。
通常,我们知道一个程序模块M中的方法A,向其发出调用请求,并传入A方法需要的参数P,方法A执行完毕后,返回处理结果R。
这种函数或方法调用通常发生在同一台机器上的同一程序语言环境下。
现在的我们需要一种能够在不同计算机间的不同语言编写的应用程序系统中,通过网络通讯实现函数和方法调用的能力,而Web service正是应这种需求而诞生的。
简单来说,webservice就是一个网络组件,一个可以通过网络访问的程序。
Webservice、WSDL、SOAP的关系Web Service = SOAP + HTTP + WSDL。
其中,SOAP Simple Object Access Protocol)协议是web service的主体,它通过HTTP或者SMTP等应用层协议进行通讯,自身使用XML 文件来描述程序的函数方法和参数信息,从而完成不同主机的异构系统间的计算服务处理。
这里的WSDL(Web Services Description Language)web 服务描述语言也是一个XML文档,它通过HTTP向公众发布,公告客户端程序关于某个具体的Web service服务的URL信息、方法的命名,参数,返回值等。
Webservice服务器端工作流程监听网络端口(监听服务端口)接收客户端请求(接收SOAP请求)解析客户端请求(解析SOAP消息,将SOAP消息转换为数据对象)调用业务逻辑(调用Web Service实现类的特定操作,参数是由SOAP消息转换而来的数据对象)生成响应(将返回值转换为SOAP消息)返回响应(返回SOAP响应)Webservice客户端工作流程构造SOAP请求消息(将本地数据对象转换为SOAP消息)发送SOAP消息到Web Service服务器的指定端口接收SOAP响应消息将SOAP响应消息转换为本地数据对象以上知识点参考了互联网上的相关信息以帮助理解开发原理,读者想要详细学习wsdl 和soap的话,可到w3cschool网站查阅相关资料。
axis+webservice教程
利用AXIS开发Webservice(一) --- 如何发布自己的webservice先介绍下本人开发环境吧。
JDK 1.4.2 + MyecHpse 6.0 (实在经不起诱惑,尝尝鲜)+ Tomcat5.0.28 + AXIS 1.4。
AXIS 1.4包可以在/axis/找到。
假设所有的环境你已经搭好,并且AXIS包也已经下好了。
OK, Herewego~MUaxis-bui-l_4.zip这个包可以看到webapps目录,双击进入把里面的AXIS文件夹拷到 %TOMCAT_HOME%¥webapps 目录下,之启拷贝activation.jar、mail.jar、tools.jar?)J%TOMCAT_HOME%¥webapps¥axis¥WEB-INF¥lib 目录下。
启动tomcat,访问littp://localliost:8080/axis/happyaxis.jsp如果访问成功,恭喜你!基本的配置你已经做完了。
PS;此处的%TOMCAT_HOME%指的是Tomcat的安装目录,至于那另外的三个jar包, J2EE 1.4库里就能找的亂现在来说一下最关键的Webseivice的发布。
AXIS提供了两种发布方式,一种是即时发布(Instant Deployment) >另外一种是定制发布(Custom Deployment)。
即时发布提供了一种非常简单的webseivice的发布方式,但是其中限制太多,因此在实际的开发中定制发布才是首选。
这里也将会以定制发布为重点来介绍。
1 .即时发布 JWS (Java Web Service) Files ■ Instant Deployment即时发布提供了一种非常简单发布方式,发布者只要有Java源代码(也就是.java文件), 然后把其后缀名改成jws (也就是java web service的缩写)拷贝到%TOMCAT_HOME%¥webapps¥axis目录下即完成了所有的发布工作。
java webservice几种调用方式
Java WebService几种调用方式一、介绍Java WebService是一种基于SOAP协议的远程方法调用技术,可以实现跨评台、跨语言的通信。
在实际应用中,我们可以使用多种方式来调用Web服务,本文将介绍Java WebService几种常见的调用方式。
二、基于JAX-WS的调用方式JAX-WS(Java API for XML Web Services)是一种用于创建和调用Web服务的Java标准。
通过使用JAX-WS,我们可以方便地创建客户端和服务端,并进行方法调用。
在客户端,我们可以通过使用wsimport命令生成客户端的Java代码,并使用Java代码来调用Web服务的方法。
在服务端,我们可以通过使用@WebService注解来发布服务,并使用Java代码实现方法的具体逻辑。
三、基于Axis的调用方式Apache Axis是一个流行的开源Java Web服务框架,它支持SOAP协议,可以用于创建和调用Web服务。
在基于Axis的调用方式中,我们可以使用WSDL2Java工具生成客户端的Java代码,然后使用Java代码来调用Web服务的方法。
在服务端,我们可以使用Java代码实现方法的逻辑,并使用Axis框架来发布服务。
四、基于CXF的调用方式Apache CXF是另一个流行的开源Java Web服务框架,它也支持SOAP协议,并提供了丰富的特性和扩展性。
在基于CXF的调用方式中,我们可以使用wsdl2java工具生成客户端的Java代码,然后使用Java代码来调用Web服务的方法。
在服务端,我们可以使用Java代码实现方法的逻辑,并使用CXF框架来发布服务。
五、总结在本文中,我们介绍了Java WebService几种常见的调用方式,包括基于JAX-WS、Axis和CXF。
通过这些调用方式,我们可以方便地创建和调用Web服务,实现跨评台、跨语言的通信。
个人观点和理解作为Java开发人员,我认为Java WebService是一种非常重要的技术,它可以帮助我们实现分布式系统之间的通信,为企业级应用的开发提供了很大的便利。
Webservice-使用Axis发布调用服务
注意:本案例是基于Axis Webservice框架进行的!Axis框架来自 Apache 开放源代码组织,它是基于JAVA语言的最新的 SOAP 规范的开放源代码实现,它为java应用服务器提供了标准的webservice能力。
一、 webservice简介webservice 的概念是使用一个标准的输出接口来定义代码提供的功能,以便让外界可以通过这个标准的输出接口来调用,而所谓的标准输出接口就是wsdl。
通过webservice,可以实现不同系统间的交互功能,比如,我们可以在esp里调用vsb里的站点数据与功能,甚至可以操作CS 架构的系统。
服务端1、新建一个web工程,将Axis相关Jar包拷贝到lib目录中,Jar包如下图。
2、新建服务端类Server.java,编写第一个方法sayHello(String name)3、在web.xml中添加如下代码<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-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><!-- webservice监听器--><listener><listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener</listener-class> </listener><!-- Mime设定--><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>5、在WEB-INF下增加server-config.wsdd文件每部署一个新的WEB服务时,都需要将新服务的描述信息加入到server-config.wsdd中。
axis开发web service文档
Axis框架开发web service1.搭建axis环境●建立自己的web工程bookstore●把当前目录下的Axis.rar解压缩到一个文件夹,这里假设你解到C:\axis,把C:\axis\webapps\axis\WEB-INF\lib目录下的所有.jar文件复制到你的这个web 应用程序的WEB-INF\lib下,再把C:\axis\webapps\axis\WEB-INF目录下的web.xml复制到你的web应用程序的WEB-INF下。
这个步骤相当于在你的web应用程序中配置了Axis,若要集成spring则需要将当前目录下的lib/spring.jar复制到你的这个web应用程序的WEB-INF\lib下,以支持spring集成.2.配置环境变量将当前目录下的lib文件夹下的所有文件复制到d:/lib下,修改环境变量CLASSPATH,在后边加上下边这一段:d:\lib\axis.jar;d:\lib\jaxrpc.jar;d:\lib\commons-logging-1.0.4.jar;d:\lib\commons-discovery-0.2.jar; d:\lib\jaxrpc.jar;d:\lib\commons-logging-1.0.4.jar;d:\lib\saaj.jar;d:\lib\wsdl4j-1.5.1.jar;3.建立服务类●图书实体类:Bookpackage com.bookstore.model;public class Book {private String name;private String ISDN;private String author;public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public String getISDN() {return ISDN;}public void setISDN(String isdn) {ISDN = isdn;}public String getName() {return name;}public void setName(String name) { = name;}}业务逻辑类:BookServicepackage com.bookstore.service;public class BookService {public void printBook(com.bookstore.model.Book book){System.out.println("name:"+book.getName());System.out.println("ISDN:"+book.getISDN());System.out.println("author:"+book.getAuthor());}}4.创建deploy.wsdd在工程的WEB-INF下创建文件deploy.wsdd,编写deploy.wsdd发布文件,typeMapping定义book类的序列化配置<deployment xmlns="/axis/wsdd/"xmlns:java="/axis/wsdd/providers/java"><service name="BookService" provider="java:RPC"><parameter name="className" value="com.bookstore.service.BookService"/><parameter name="allowedMethods" value="*"/><typeMapping encodingStyle="/soap/encoding/"qname="ns1:Book"languageSpecificType="java:com.bookstore.model.book.Book"serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"name="Book"/></deployment>5.生成server-config.wsdd利用deploy.wsdd生成server-config.wsdd(axis的配置文件),无论deploy.wsdd存放于什么位置,生成的server-config.wsdd都存在于localhost:8080/bookstore/WEB-INF下java org.apache.axis.client.AdminClient -lhttp://localhost:8080/bookstore/service s/AdminService deploy.wsdd6.生成stub client生成文件包括:Book.java,BookService_PortType.javaBookServiceService.javaBookServiceServiceLocator.javaBookServiceSoapBindingStub.java具体用法参考第6步java org.apache.axis.wsdl.WSDL2Javahttp://localhost:8080/bookstore/services/BookService?wsdl -pcom.bookstore.client7.编写客户端代码访问服务package com.bookstore.test;public class BookServiceTest {public static void main(String[] args){try {com.bookstore.client.Book book=new com.bookstore.client.Book();book.setName("读者");book.setISDN("ISO9001-4532d-107-8970");book.setAuthor("fool");com.bookstore.client.BookServiceService bookService=newcom.bookstore.client.BookServiceServiceLocator();com.bookstore.client.BookService_PortType client=bookService.getBookService(); client.printBook(book);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}8.集成spring●要是web服务的类能够和spring环境一起工作,有一些额外的工作要做,web服务的提供类必须有spring管理,因此在调用web服务时需要从web应用环境中去的代表服务类的bean,完成这一步用到了一个开放源代码组织提供的几个类/projects/spring/browse/SPR-371SpringAxisServlet.java,SpringBeanProvider.java,SpringBeanRPCPrvider.java SpringAxisServlet:继承自AxisServlet,用来加载spring的context,SpringBeanProvier运行的前提SpringBeanProvider:用于获取spring context中的beanSpringBeanRPCProvider:调用SpringBeanProvider来获得通过Spring IoC注入后的web 服务bean,这三个类在当前目录下的spring-axis文件夹下可以找到●将上述三个类文件复制到你的web工程中●建立spring业务类SpringServicepackage com.bookstore.service;public class SpringService {private String user;public void callUser(){System.out.println("Hi,"+user);System.out.println("Date:"+new java.util.Date());}public String getUser() {return user;}public void setUser(String user) {er = user;}}●WEB-INF下建立spring配置文件AxisServlet-servlet.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC"-//SPRING//DTD BEAN//EN""/dtd/spring-beans.dtd"> <beans><beanname="SpringService"class="com.bookstore.service.SpringService"><property name="user"><value>Wang Gai</value></property></bean></beans>●在web.xml中需要加入如下配置:<servlet><servlet-name>AxisServlet</servlet-name><display-name>Apache-Axis Servlet</display-name><servlet-class>com.bookstore.axis.SpringAxisServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/applicationcontext.xml</param-value> </init-param></servlet>●deploy.wsdd配置如下:<service name="SpringTest" provider="Handler" style="rpc"><parameter name="handlerClass"value="com.bookstore.axis.SpringBeanRPCProvider"/><parameter name="springBean" value="SpringService"/><parameter name="allowedMethods" value="*"/></service>●生成server-config.wsddjava org.apache.axis.client.AdminClient -lhttp://localhost:8080/bookstore/service s/AdminService deploy.wsdd●生成stub clientjava org.apache.axis.wsdl.WSDL2Javahttp://localhost:8080/bookstore/services/SpringService?wsdl -pcom.bookstore.client.spring●编写客户端程序测试服务package com.bookstore.test;public class SpringServiceTest {public static void main(String[] args){try {com.bookstore.client.spring.SpringServiceService springServiceService=newcom.bookstore.client.spring.SpringServiceServiceLocator();com.bookstore.client.spring.SpringService_PortType client=springServiceService.getSpringService();client.callUser();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}。
使用axis自动生成webservice客户端代码
利用AXIS生成客户端文件,使得开发webservice更加简单,以下是我的个人代码,工具:Myeclipse7.0,axis1.4,tomcat5.5,jdk1.5一、下载axis的jar包,我的是axis-bin-1_4.zip包,解压后有axis的lib目录,一会儿我们要用,二、在myeclip se中创建自己的webservice工程,这个在的文库里有,三、在C盘目录下创建一个批处理文件,我的名字是wsdltojava.bat,内容如下:set Axis_Lib=E:\jar\axis\asixTool\axis-bin-1_4\axis-1_4\libset Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%set Axis_Servlet=http://localhost:8090/myAxis/services/HelloWorld?wsdl %Java_Cmd% org.apache.axis.wsdl.WSDL2Java -u %Axis_Servlet%备注:红色字体我的axis的目录,也就是刚才我解压出来的axis,蓝色是我的webservice的访问地址,其他的不用处理,然后双击这个文件,产生以下几个文件:(1)、目录是:C:\localhost\myAxis\services\HelloWorld(2)、四、将这四个文件拷贝到你的客户端,创建客户端运行即可附录代码:服务端HelloWorld.javapackage webservice.axis.test;public class HelloWorld {public String hello(){return"Hello "+"aaaaaaaaaaaaaaaaaa";}}客户端(通过刚才命令生成的四个文件)HelloWorld.java/*** HelloWorld.java** This file was auto-generated from WSDL* by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.*/package webservice.axis.test.batClient;public interface HelloWorld extends java.rmi.Remote {public ng.String hello() throws java.rmi.RemoteException;}HelloWorldService.java/*** HelloWorldService.java** This file was auto-generated from WSDL* by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.*/package webservice.axis.test.batClient;public interface HelloWorldService extends javax.xml.rpc.Service {public ng.String getHelloWorldAddress();public webservice.axis.test.batClient.HelloWorld getHelloWorld() throwsjavax.xml.rpc.ServiceException;public webservice.axis.test.batClient.HelloWorld getHelloWorld(.URL portAddress) throws javax.xml.rpc.ServiceException;}HelloWorldServiceLocator.java/*** HelloWorldServiceLocator.java** This file was auto-generated from WSDL* by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.*/package webservice.axis.test.batClient;public class HelloWorldServiceLocator extends org.apache.axis.client.Service implements webservice.axis.test.batClient.HelloWorldService {public HelloWorldServiceLocator() {}public HelloWorldServiceLocator(org.apache.axis.EngineConfiguration config) { super(config);}public HelloWorldServiceLocator(ng.String wsdlLoc, space.QName sName) throws javax.xml.rpc.ServiceException {super(wsdlLoc, sName);}// Use to get a proxy class for HelloWorldprivate ng.String HelloWorld_address = "http://localhost:8090/myAxis/services/HelloWorld";public ng.String getHelloWorldAddress() {return HelloWorld_address;}// The WSDD service name defaults to the port name.private ng.String HelloWorldWSDDServiceName = "HelloWorld";public ng.String getHelloWorldWSDDServiceName() {return HelloWorldWSDDServiceName;}public void setHelloWorldWSDDServiceName(ng.String name) {HelloWorldWSDDServiceName = name;}public webservice.axis.test.batClient.HelloWorld getHelloWorld() throws javax.xml.rpc.ServiceException {.URL endpoint;try {endpoint = new .URL(HelloWorld_address);}catch (.MalformedURLException e) {throw new javax.xml.rpc.ServiceException(e);}return getHelloWorld(endpoint);}public webservice.axis.test.batClient.HelloWorld getHelloWorld(.URL portAddress) throws javax.xml.rpc.ServiceException {try {webservice.axis.test.batClient.HelloWorldSoapBindingStub _stub = new webservice.axis.test.batClient.HelloWorldSoapBindingStub(portAddress, this);_stub.setPortName(getHelloWorldWSDDServiceName());return _stub;}catch (org.apache.axis.AxisFault e) {return null;}}public void setHelloWorldEndpointAddress(ng.String address) {HelloWorld_address = address;}/*** For the given interface, get the stub implementation.* If this service has no port for the given interface,* then ServiceException is thrown.*/public java.rmi.Remote getPort(Class serviceEndpointInterface) throws javax.xml.rpc.ServiceException {try {if(webservice.axis.test.batClient.HelloWorld.class.isAssignableFrom(serviceEndpointInterface)) { webservice.axis.test.batClient.HelloWorldSoapBindingStub _stub = new webservice.axis.test.batClient.HelloWorldSoapBindingStub(new.URL(HelloWorld_address), this);_stub.setPortName(getHelloWorldWSDDServiceName());return _stub;}}catch (ng.Throwable t) {throw new javax.xml.rpc.ServiceException(t);}throw new javax.xml.rpc.ServiceException("There is no stub implementation for the interface: " + (serviceEndpointInterface == null ? "null" : serviceEndpointInterface.getName()));}/*** For the given interface, get the stub implementation.* If this service has no port for the given interface,* then ServiceException is thrown.*/public java.rmi.Remote getPort(space.QName portName, Class serviceEndpointInterface) throws javax.xml.rpc.ServiceException {if (portName == null) {return getPort(serviceEndpointInterface);}ng.String inputPortName = portName.getLocalPart();if ("HelloWorld".equals(inputPortName)) {return getHelloWorld();}else {java.rmi.Remote _stub = getPort(serviceEndpointInterface);((org.apache.axis.client.Stub) _stub).setPortName(portName);return _stub;}}public space.QName getServiceName() {return new space.QName("http://localhost:8090/myAxis/services/HelloWorld", "HelloWorldService");}private java.util.HashSet ports = null;public java.util.Iterator getPorts() {if (ports == null) {ports = new java.util.HashSet();ports.add(newspace.QName("http://localhost:8090/myAxis/services/HelloWorld", "HelloWorld"));}return ports.iterator();}/*** Set the endpoint address for the specified port name.*/public void setEndpointAddress(ng.String portName, ng.String address) throws javax.xml.rpc.ServiceException {if ("HelloWorld".equals(portName)) {setHelloWorldEndpointAddress(address);}else{ // Unknown Port Namethrow new javax.xml.rpc.ServiceException(" Cannot set Endpoint Address for Unknown Port" + portName);}}/*** Set the endpoint address for the specified port name.*/public void setEndpointAddress(space.QName portName, ng.String address) throws javax.xml.rpc.ServiceException {setEndpointAddress(portName.getLocalPart(), address);}}HelloWorldSoapBindingStub.java/*** HelloWorldSoapBindingStub.java** This file was auto-generated from WSDL* by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.*/package webservice.axis.test.batClient;public class HelloWorldSoapBindingStub extends org.apache.axis.client.Stub implements webservice.axis.test.batClient.HelloWorld {private java.util.Vector cachedSerClasses = new java.util.Vector();private java.util.Vector cachedSerQNames = new java.util.Vector();private java.util.Vector cachedSerFactories = new java.util.Vector();private java.util.Vector cachedDeserFactories = new java.util.Vector();static org.apache.axis.description.OperationDesc [] _operations;static {_operations = new org.apache.axis.description.OperationDesc[1];_initOperationDesc1();}private static void _initOperationDesc1(){org.apache.axis.description.OperationDesc oper;org.apache.axis.description.ParameterDesc param;oper = new org.apache.axis.description.OperationDesc();oper.setName("hello");oper.setReturnType(newspace.QName("/2001/XMLSchema", "string"));oper.setReturnClass(ng.String.class);oper.setReturnQName(new space.QName("", "helloReturn"));oper.setStyle(org.apache.axis.constants.Style.RPC);oper.setUse(e.ENCODED);_operations[0] = oper;}public HelloWorldSoapBindingStub() throws org.apache.axis.AxisFault {this(null);}public HelloWorldSoapBindingStub(.URL endpointURL, javax.xml.rpc.Service service)throws org.apache.axis.AxisFault {this(service);super.cachedEndpoint = endpointURL;}public HelloWorldSoapBindingStub(javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {if (service == null) {super.service = new org.apache.axis.client.Service();} else {super.service = service;}((org.apache.axis.client.Service)super.service).setTypeMappingVersion("1.2");}protected org.apache.axis.client.Call createCall() throws java.rmi.RemoteException { try {org.apache.axis.client.Call _call = super._createCall();if (super.maintainSessionSet) {_call.setMaintainSession(super.maintainSession);}if (super.cachedUsername != null) {_call.setUsername(super.cachedUsername);}if (super.cachedPassword != null) {_call.setPassword(super.cachedPassword);}if (super.cachedEndpoint != null) {_call.setTargetEndpointAddress(super.cachedEndpoint);}if (super.cachedTimeout != null) {_call.setTimeout(super.cachedTimeout);}if (super.cachedPortName != null) {_call.setPortName(super.cachedPortName);}java.util.Enumeration keys = super.cachedProperties.keys();while (keys.hasMoreElements()) {ng.String key = (ng.String) keys.nextElement();_call.setProperty(key, super.cachedProperties.get(key));}return _call;}catch (ng.Throwable _t) {throw new org.apache.axis.AxisFault("Failure trying to get the Call object", _t);}}public ng.String hello() throws java.rmi.RemoteException {if (super.cachedEndpoint == null) {throw new org.apache.axis.NoEndPointException();}org.apache.axis.client.Call _call = createCall();_call.setOperation(_operations[0]);_call.setUseSOAPAction(true);_call.setSOAPActionURI("");_call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);_call.setOperationName(newspace.QName("http://test.axis.webservice", "hello"));setRequestHeaders(_call);setAttachments(_call);try { ng.Object _resp = _call.invoke(new ng.Object[] {});if (_resp instanceof java.rmi.RemoteException) {throw (java.rmi.RemoteException)_resp;}else {extractAttachments(_call);try {return (ng.String) _resp;} catch (ng.Exception _exception) {return (ng.String) org.apache.axis.utils.JavaUtils.convert(_resp, ng.String.class);}}} catch (org.apache.axis.AxisFault axisFaultException) {throw axisFaultException;}}}最后要感谢网上资源。
axis 开发webservice
axis 开发webservice摘要:本节主要用于介绍使用axis开发webservice,包括服务端的创建、webservice的部署、客户端的调用。
preparation:说明:相关的可能要了解SOAP(简单对象访问协议)、WSDL(web服务描述语言)、XML(可扩展标记语言)、axis(阿帕奇可扩展交互系统)等相关知识。
1.下载axis的jar包,请到apache官网或者在百度自行下载,然后导入jar包,不清楚的话导入所有的jar包就好了。
(本人用的是axis1的版本,因为项目中用的是axis1的版本)2.webservice客户端生成工具genclient.bat(后面会对这个工具做一个简单的说明)之前介绍没有说明本机的环境,现在把本机环境罗列一下:系统:XP myeclipse:6.5 tomcat:5.X JDK:1.5生成webservice的方式有XFire、Jax-WS、axis等,使用axis调用webservi有三种方式:动态调用接口、使用动态代理Dynamic Proxy、使用从WSDL生成的存根generated Stubs from Service WSDL description,由于本人工作中使用的是axis,调用webservice的方式用到的有动态调用接口、使用从WSDL生成的存根generated Stubs from Service WSDL description,故本节只介绍用axis调用webservice的这两种方式。
后续的拓展部分根据需要再说。
start:第一步:服务器端的开发(1)开发java文件代码如下:接口文件:IBbossGroupInfoService.java接口1 package info.b2p.soap.interfaces;23 import java.rmi.RemoteException;45 public interface IBbossGroupInfoService {67 // 根据集团编号查询集团基本信息8 /**9 * 集团编号GROUP_NUM 集团名称GROUP_NAME 公司地址CO_ADDR 集团状态GROUP_STATE 集团开户时间10 * START_TIME 传真FAX 企业网址WEB_URL 证件类型CARD_TYPE 证件号码CARD_CODE11 * 公司邮编CO_POSTCODE 联系电话TEL_NUM 法人代表名称PERSON_NAME 发展类型DEVELOP_TYPE12 * 地区编码REGION_ID regionId13 *14 * @throws Exception15 */16 public abstract String groupInfo(long groupNo) throws Exception,17 RemoteException;1819 // 根据集团编号查询集团订购历史20 public abstract String groupSubHistoryInfo(long groupNo) throws Exception;2122 }实现类:IBbossGroupInfoServiceImpl.java实现类1 package info.b2p.soap.impl;23 import mons.logging.Log;4 import mons.logging.LogFactory;5 import info.b2p.soap.interfaces.IBbossGroupInfoService;67 /**8 * @Product esop_dev9 * @FileName IBbossGroupInfoServiceImpl.java10 * @History TODO 根据集团编号,查询集团基本信息、集团用户信息、集团订购历史11 * @Version 1.0.012 * @Date Nov 22, 201113 * @Author pantaipeng14 * @Content 最初版本15 */16 public class IBbossGroupInfoServiceImpl implements IBbossGroupInfoService {17 private static transient Log log = LogFactory18 .getLog(IBbossGroupInfoServiceImpl.class);192021 // 根据集团编号查询集团基本信息22 public String groupInfo(long groupNo) throws Exception, RemoteException {23 (">>>>>>>>>>>>>>>>>>>>>>>>>>>集团编号=" + groupNo);24 //方法体我省略了,为了测试我仅加入一句打印语句25 System.out.println("我是一个公共的方法,作用是根据集团编号查询集团基本信息");26 String xml="<message>public_groupInfo</message>";//为了测试,返回的信息我也是随便写的一个字符串27 return xml;28 }2930 // 根据集团编号查询集团订购历史31 public String groupSubHistoryInfo(long groupNo) throws Exception {3233 (">>>>>>>>>>>>>>>>>>>>>>>>>>>集团编号=" + groupNo);34 //方法体我省略了,为了测试我仅加入一句打印语句35 System.out.println("我是一个公共的方法,作用是根据集团编号查询集团订购历史");36 String xml="<message>public_groupSubHistoryInfo</message>";//为了测试,返回的信息我也是随便写的一个字符串37 return xml;38 }39 }说明:为了更加的接近实际的开发,这个是本机上运行的程序,实现的功能是通过一个编号查询相关信息拼成一个字符串,方法体的部分我删除了,你需要用这个代码的话,直接拷贝修改包名称就可以直接用了。
应用AXIS开始Web+Service之旅
应用AXIS开始Web 服务之旅一.介绍本文并不是想介绍Web服务的原理、系统架构等,我们假设您已经了解了关于Web 服务的一些基本的概念、原理等知识。
本文主要是针对那些已经了解Web服务概念,但是还没有亲身体会Web服务所带来令人欢欣鼓舞的特征的开发人员。
在此我们认为你已经具备了Java、XML等基础知识,如果你还有其他开发环境的经验例如VB、VC 那是再好不过的了。
1.Web服务虽然我们并不想详细讲述Web服务的体系结构,但是大概的介绍一下还是有必要的。
Web服务是一种新型的Web应用程序。
不同于其他Web应用程序,它是自适应、自我描述、模块化的应用程序,并可以跨越Web进行发布、定位以及调用。
简单的Web 服务可以提供例如天气预报或者航班信息的服务。
一旦部署了Web服务,其他的应用程序就可以发现和调用所部署的服务。
2.AXIS项目Axis框架来自 Apache 开放源代码组织,它是基于JAVA语言的最新的 SOAP 规范(SOAP 1.2)和 SOAP with Attachments 规范(来自 Apache Group )的开放源代码实现。
AXIS的最新版本是1.1,可以从/axis/index.html下载。
下图是AXIS核心引擎的体系结构图:图1整个AXIS项目包括以下几个部分:1.消息流子系统消息流子系统提供了灵活的消息传递框架,这个消息传递框架包括处理程序、链、序列化程序和反序列化程序。
处理程序是一个处理请求、响应和故障流的对象。
处理程序可被组合在一起成为链,而且可以使用一个灵活的部署描述符来配置这些处理程序的顺序。
2.传输框架子系统提供了一个传输框架,这个传输框架可以帮助您创建自己的可插式传输发送器和传输侦听器。
3.数据编码子系统AXIS完全按照XML Schema 规范提供各种数据类型的自动序列化,并且提供功能扩展接口来使用您自己定制的序列化器和反序列化器。
4.其他AXIS完全支持WSDL 以及日志记录、出错以及故障处理机制。
MyEclipse下开发Web_Service(Axis)
MyEclipse下开发Web Service(Axis)本文主要描述如何使用Apache开源项目Axis提供的API来实现Web Services。
本文中的提到的例子只为了方便本文的描述而提出,有不妥之处请见谅。
本文的读者应有JAVA web 应用开发基础。
应该具有看过WSDL,SOAP,XML等的基本规范。
熟悉Eclipse+MyEclipse开发环境。
本文可以随意转载使用,但是要保留作者的署名。
一、环境准备使用Axis来开发Web services 需要准备 web 服务器,Axis API。
本文使用的Web container 是Tomcat5.5, Axis API 采用版本2。
1.1软件下载准备Tomcat下载地址:/download-55.cgi#5.5.20Axis标准包:/apache/ws/axis2/1_0/axis2-std-1.0-bin.zipAxis War包:/apache/ws/axis2/1_0/axis2.warAxis Eclipse plug-in(代码生成工具和打包工具):/ws/axis2/tools/1_0/Axis2_Code_Generator. zip/ws/axis2/tools/1_0/Axis2_Service_Archiver.zipEclipse+MyEclipse:可以到官方网站下载(本文为3.2+5.0GA)1.2安装A.首先搭建开发环境,需要将下载到的Eclipse解压缩到一个目录。
B.将下载到的Axis 的两个plug-in解压缩到Eclipse安装目录下的plug-in子目录。
C.安装MyEclipse5.0GA。
然后启动MyEclipse,并选择“File->New->Other”可以找到下面的这些Wizards,这些将是本文中用到的很重要的工具。
D.下面开始搭建Web Services的部署环境。
将下载的tomcat报解压缩到一个目录。
Webservice_axis_dev
WebService测试,开发,部署2007年12月目录1WEBSERVICE 测试 (4)1.1使用XMLSPY测试接口 (4)1.2用TCPMON测试捕获SOAP数据包 (7)1.3用XMLHTTP发送SOAP数据包 (7)2WEBSERVICE开发 (8)2.1客户端代码开发 (8)2.1.1Wsdl2java命令方式 (8)2.1.1.1预备wsdl2java.bat (8)2.1.1.2在Jbuilder新建空白工程. (8)2.1.1.3导入Axis和Junit的lib. (9)2.1.1.4运行wsdl2java.bat (11)2.1.1.5在Jbuilder中测试代码 (12)2.1.1.6以Ant方式运行WSDL2Java (12)2.1.2完全在Jbuilder中开发客户端代码 (13)2.1.2.1新建客户端工程. (13)2.1.2.2新建Axis Web Services Client Configuration. (14)2.1.2.3将Jbuilder自带的Axis1.2 lib升级为1.4版本 (15)2.1.2.4创建Webservice Client (16)2.1.2.5生成客户端代码 (19)2.1.2.6进行单元测试 (20)2.1.2.7捕获单元测试数据包 (24)2.1.2.8捕获html测试数据包 (30)2.2服务端代码开发 (32)2.2.1基于Axis开发服务端 (32)2.2.1.1新建服务端工程. (32)2.2.1.2新建服务端接口声明(可选). (33)2.2.1.3新建服务端实现类. (34)2.2.1.4通过Jbuilder导出实现类为WebService接口. (36)2.2.1.5启动WebService服务端 (40)2.2.2在Spring中导出bean为WebService接口. (42)3WEBSERVICE手工部署 (42)3.1部署A XIS (42)3.1.1提取Axis的web应用 (42)3.1.2启动Tomcat并检查axis是否正常 (43)3.2发布W EB S ERVICE (43)3.2.1查看现有部署的服务 (43)3.2.2编写部署描述文件axis.wsdd (43)3.2.3复制class文件 (44)3.2.4命令行方式发布WebService (44)3.2.5察看部署的服务 (44)3.2.6测试部署的服务 (44)4附录 (45)4.1相关资源下载 (45)4.2相关参考资料 (45)4.3将WSDL生成文档提供给接口调用者 (45)1WebService 测试不编写代码的情况下,对webservice进行测试,编写代码进行测试的方法.1.1 使用xmlspy测试接口测试webservice接口地址为:/globalweather.asmx?WSDL/Service.asmx?WSDL/Service.asmx/getSupportProvince/Service.asmx?op=getSupportCity在xmlspy中的测试步骤:1.启动XmlSpy,主菜单-->SOAP --> Create new SOAP request.2.选择wsdl文件或者提供wsdl的网址:3.选择要测试的方法4.填写调用参数5.发送请求6.查看服务端返回的结果7.由于wsdl描述的webservice入口和我们要连接的服务器不一定是同一个地址,因此还可以改变连接参数8.因此参考: /products/xmlspy/soap_test_debugger.html这种方式的优点是:门槛低,只要会填参数就可以测试webservice。
axis_WebService_-_开发指南
网上下载,分享给爱好技术的朋友,共同努力!!Axis1.x一、搭建简单的axis web服务1、在官方网站下载axis的工程(这个等下就有用的)和源码、jar包等,下载地址是:/apache-mirror//ws/axis/1_4/2、解压下载的工程或源码(两个中任意一个都可以),解压axis-bin-1.4可以看到大致目录是这样的:docs是文档、lib是jar包、sample是示例、xmls是当前工程所需的xml、webapps是当前工程的webroot目录;我们打开webapps目录就可以看到一个axis的文件夹,这个文件夹里面有WEB-INF文件夹和一些页面,将axis复制到你的tomcat的webapps目录下。
然后启动tomcat服务,访问http://localhost:8080/axis/,看到下面的解码就说明部署成功了:以后我们将和这个工程不离不弃,它将在我们的axis1.x的webService中发挥很大的作用!3、创建我们自己的web工程,这里我新建的AxisWebService;创建好工程后,将刚才解压的axis-bin中的lib的jar包copy到当前工程的lib中;axis-ant.jaraxis.jarcommons-discovery-0.2.jarcommons-logging-1.0.4.jarjaxrpc.jarlog4j-1.2.8.jarsaaj.jarwsdl4j-1.5.1.jaractivation-1.1.jarmail-1.4.jar创建webService类文件,代码如下:package com.hoo.service;/***<b>function:</b>jws的axis WebService*@author hoojo*@createDate Dec15,201017:03:49PM*@file HelloWorldService.java*@package com.hoo.service*@project AxisWebService*@blog /IBM_hoojo*@email hoojo_@*@version 1.0*/public class HelloWorldService {public String sayHello(String name, int age) {return name + " say : hello world! [axis] my age is " + age;}}4、复制HelloWorldService.java到我们刚才复制的axis文件夹下即可;也就是tomcat 下的webapps下的axis下即可;注意:还有重要的一般就是要将这个java文件中的包名去掉,并且将这个文件重命名为HelloWorldService.jws;如果带包名的话,请求后编译的class将会在包路径下,这样我们在全球当前jws的时候就会出现找不到class,详细的你可以到发布在tomcat下的工程看看WEB-INF目录下的jwsClass就一目了然了。
CXF使用教程(二)——webService自动生成客户端代码
CXF使⽤教程(⼆)——webService⾃动⽣成客户端代码webService⾃动⽣成客户端代码有四种⽅法:⼀:使⽤Axis⽣产客户端代码(另存为bat⽂件)需要注意的是:⽬录包含空格,⽐如Axis_Lib,Output_Pathset Axis_Lib=F:\axis1.4\axis\WEB-INF\libset Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%set Output_Path=D:\Workspacesset Package=com.axis.sub%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% http://192.168.11.62:8090/rainLogin?wsdl pause⼆:使⽤JDK1.6的wsimport.exe(在jdk的bin⽬录下)产⽣客户端代码(之前要将JDK的bin添加到环境变量Path中)wsimport -keep -p com.jdk6.sub -s JavaSrc http://192.168.11.62:8090/rainLogin?wsdl1. -s(src):在当前路径下的JavaSrc(要⼿动创建)⽂件夹中⽣成客户端代码2. -p(package):定义客户端代码的包名3. -keep 保留.class⽂件三:使⽤CXF wsdl2java.bat (要先将CXF的bin⽬录添加到环境变量Path下)在cmd本项⽬SCR⽬录下运⾏下⾯代码,就会在src下⽣成客户端代码wsdl2java http://192.168.11.62:8080/FFWebservice/services/PortalServices?wsdl四:使⽤Myeclipse⾃带⼯具⽣成客户端代码finnish 就可以⽣成客户端代码了。
个⼈⼀般⽐较喜欢⽤第⼆种⽅法。
axis进行webService接口生成
WebService接口开发生成.java文件Java基础很深很多,需要我们不断发现更新自己的知识,灵活运用。
在工作生涯里,做了一年的短信接口开发,每个合作方的接口文档都各异,从合作方那里了解和阅读了许多的文档,最常见的有hhtp协议的接口文档,webService接口文档,现在我主要说下webservice接口文档生成.java文件。
我用的的是axis进行生成的,现在已是axis2以上版本的了,axis大家可以在网上自己下载。
首先,我们在记事本里写下这样的一个文件:set Axis_Lib=D:\log\libset Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%set Output_Path=D:\work\test\srcset Package=fly.shina.server.SayHello%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% http://58.248.184.4:8080/SMSInterfaceWS/smsService.ws?wsdl将记事本属性更改为.bat,保存。
1.set Axis_Lib=D:\log\lib这是我们存放axis里的主要用到的几个包:大家根据截图里的信息找到这些jar包,放入你所在盘的文件夹里。
2.固定写法set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%(Axis_Lib是1里面的命名)3. set Output_Path=D:\work\test\src,生成.java文件存放的位置,生成好后就可以调用这些.java的类方法,进行接口的调用。
4. set Package=fly.shina.server.SayHello。
这个是我们命名的包名,将生成好后的.java放入这个包里。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WebService测试,开发,部署目录1WEBSERVICE 测试 (4)1.1使用XMLSPY测试接口 (4)1.2用TCPMON测试捕获SOAP数据包 (7)1.3用XMLHTTP发送SOAP数据包 (7)2WEBSERVICE开发 (8)2.1客户端代码开发 (8)2.1.1Wsdl2java命令方式 (8)2.1.1.1预备wsdl2java.bat (8)2.1.1.2在Jbuilder新建空白工程. (8)2.1.1.3导入Axis和Junit的lib. (9)2.1.1.4运行wsdl2java.bat (11)2.1.1.5在Jbuilder中测试代码 (12)2.1.1.6以Ant方式运行WSDL2Java (12)2.1.2完全在Jbuilder中开发客户端代码 (13)2.1.2.1新建客户端工程 (13)2.1.2.2新建Axis Web Services Client Configuration. (14)2.1.2.3将Jbuilder自带的Axis1.2 lib升级为1.4版本 (15)2.1.2.4创建Webservice Client (16)2.1.2.5生成客户端代码 (19)2.1.2.6进行单元测试 (20)2.1.2.7捕获单元测试数据包 (24)2.1.2.8捕获html测试数据包 (30)2.2服务端代码开发 (32)2.2.1基于Axis开发服务端 (32)2.2.1.1新建服务端工程 (32)2.2.1.2新建服务端接口声明(可选). (33)2.2.1.3新建服务端实现类. (34)2.2.1.4通过Jbuilder导出实现类为WebService接口. (36)2.2.1.5启动WebService服务端 (40)2.2.2在Spring中导出bean为WebService接口 (42)3WEBSERVICE手工部署 (42)3.1部署A XIS (42)3.1.1提取Axis的web应用 (42)3.1.2启动Tomcat并检查axis是否正常 (43)3.2发布W EB S ERVICE (43)3.2.1查看现有部署的服务 (43)3.2.2编写部署描述文件axis.wsdd (43)3.2.3复制class文件 (44)3.2.4命令行方式发布WebService (44)3.2.5察看部署的服务 (44)3.2.6测试部署的服务 (44)4附录 (45)4.1相关资源下载 (45)4.2相关参考资料 (45)4.3将WSDL生成文档提供给接口调用者 (45)1WebService 测试不编写代码的情况下,对webservice进行测试,编写代码进行测试的方法.1.1 使用xmlspy测试接口测试webservice接口地址为:/globalweather.asmx?WSDL/Service.asmx?WSDL/Service.asmx/getSupportProvince/Service.asmx?op=getSupportCity在xmlspy中的测试步骤:1.启动XmlSpy,主菜单-->SOAP --> Create new SOAP request.2.选择wsdl文件或者提供wsdl的网址:3.选择要测试的方法4.填写调用参数5.发送请求6.查看服务端返回的结果7.由于wsdl描述的webservice入口和我们要连接的服务器不一定是同一个地址,因此还可以改变连接参数8.因此参考: /products/xmlspy/soap_test_debugger.html这种方式的优点是:门槛低,只要会填参数就可以测试webservice。
缺点是:xmlspy不是免费的,xmlspy文件超大,携带不方便。
无法查看http header.1.2 用tcpmon测试捕获SOAP数据包工具来源,下载地址:/ws/commons/tcpmon/1_0/tcpmon-1.0-bin.zip优点,文件小巧,不只是测试webserice可以用,测试其它http接口也很方便。
缺点,没法设置contenttype,所以会有乱码。
1.3 用xmlhttp发送SOAP数据包优点,简单的html可以存放在各地,可以在预先准备好SAOP数据的情况下,将该测试用例发给工程人员在现场进行测试。
缺点,soap数据要靠自己组装。
2WebService开发2.1 客户端代码开发2.1.1Wsdl2java命令方式2.1.1.1 预备wsdl2java.batwsdl2java.bat的内容为:%JA V A_HOME%/bin/java.exe -classpath "./axis-ant.jar;./axis.jar;./commons-discovery-0.2.jar;./commons-logging-1.0.4.jar;./ja xrpc.jar;./log4j-1.2.8.jar;./saaj.jar;./wsdl4j-1.5.1.jar"org.apache.axis.wsdl.WSDL2Java -v -n -O -1 -D -W -t -a -o E:\mywork\wsdl2javatest\src/globalweather.asmx?WSDL(没有–s –S两个选项, -s用来生成服务端代码,使用-s后,-t无效).-o是原代码输出的地方。
2.1.1.2 在Jbuilder新建空白工程.2.1.1.3 导入Axis和Junit的lib.2.1.1.4 运行wsdl2java.bat2.1.1.5 在Jbuilder中测试代码在下一章节中进行详细描述。
2.1.1.6 以Ant方式运行WSDL2Javawsdl2java.xml的配置为:<?xml version="1.0" encoding="UTF-8"?><project xmlns:xsi="/2001/XMLSchema-instance"default="buildclient" xsi:type="project"><path id="axis.classpath"><fileset dir="./"><include name="**/*.jar" /></fileset></path><taskdef resource="axis-tasks.properties" classpathref="axis.classpath" /><!-- http://10.108.20.207:8080/test/services/V ersion?wsdl --><!-- /Service.asmx?WSDL --> <target name="buildclient"><axis-wsdl2javaurl="/Service.asmx?WSDL"output="E:/mywork/testwebws/classes/ws-gen/src"all="true"debug="true"deployscope="Request"helpergen="true"noimports="false"serverside="false"skeletondeploy="false"testcase="true"timeout="-1"typemappingversion="1.1"verbose="true"noWrapped="true"><!--mappingnamespace="http://10.108.20.207:8080/test/services/V ersion"package="com.test.services.V ersion"/><mapping namespace="/xml-soap" package="org.apache.xml.xml_soap"/ --><classpath refid="axis.classpath"/></axis-wsdl2java></target></project>2.1.2完全在Jbuilder中开发客户端代码2.1.2.1 新建客户端工程.点Finish.2.1.2.2 新建Axis Web Services Client Configuration.2.1.2.3 将Jbuilder自带的Axis1.2 lib升级为1.4版本1.4版本生成的代码和1.2有所不同。
2.1.2.4 创建Webservice Client2.1.2.4.1导入WSDL文件方式一-- 直接填写URL输入url之后,鼠标点到”Opeerations”,系统会自动读取url的内容。
url例子:/globalweather.asmx?WSDL可以看到能够调用的WebService方法:2.1.2.4.2导入WSDL文件方式二–导入WSDL文件2.1.2.4.3直接操作点击感叹号,直接选择2.1.2.5 生成客户端代码2.1.2.6 进行单元测试2.1.2.6.1察看生成好的测试代码.2.1.2.6.2补充测试代码生成的测试代码只是测试框架,需要补充具体的测试代码//TBD就是需要补充代码的地方补充了测试代码之后:2.1.2.6.3运行单元测试2.1.2.6.4观察单元测试结果2.1.2.7 捕获单元测试数据包2.1.2.7.1启动捕获数据的代理服务器双击运行tcpmon.bat使用listener模式,Listen Port 填写8080 Target Hostname为刚才察看到的远程ip TargetPort 为80.点“Add”.察看监控面板。
2.1.2.7.2修改测试代码的目标地址2.1.2.7.3运行单元测试2.1.2.7.4察看监控得到的数据观察http请求的头信息.2.1.2.8 捕获html测试数据包2.2 服务端代码开发2.2.1基于Axis开发服务端2.2.1.1 新建服务端工程.2.2.1.2 新建服务端接口声明(可选).2.2.1.3 新建服务端实现类.填写实现代码2.2.1.4 通过Jbuilder导出实现类为WebService接口. 必须选J2EE 1.3 ,因为要选择1.4的话,必须实现Remote接口创建Axis Server Module.由于目前没有创建WebApp,因此还需要新建Web Module.选择Servlet 2.3 和JSP 1.2。