MYECLIPSE中用axis2插件开发web service
MyEclipse下开发Web_Service(Axis2)
![MyEclipse下开发Web_Service(Axis2)](https://img.taocdn.com/s3/m/90324787b9d528ea81c77979.png)
如何将基于Axis2的Web Service集成到自己的webapp本文主要描述如何使用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标准包:/ws/axis2/1_5_1/axis2-1.5.1-bin.zipAxis War包:/ws/axis2/1_5_1/axis2-1.5.1-war.zip Eclipse+MyEclipse:可以到官方网站下载(本文为3.3+6.5GA)1.2安装A.首先搭建开发环境,需要将下载到的Eclipse解压缩到一个目录。
B.安装MyEclipse6.5GA。
然后启动MyEclipse。
C.下面开始搭建Web Services的部署环境。
将下载的tomcat包解压缩到一个目录。
完成web container的安装。
E.将axis2.war包拷贝到tomcat安装目录下的webapps目录中。
F.启动Tomcat(windows 下为TOMCA_HOME/bin中的startup.bat;Linux,unix环境为startup.sh文件),打开浏览器输入并访问:http://ip:port/axis2来查看。
(如果没有进行配臵文件的修改此地址应该为http://localhost:8080/axis2),如果能看到下面的页面则说明已经安装完成。
二、Quick Start环境准备好后,先从一个简单的例子开始。
用AXIS2开发WebService
![用AXIS2开发WebService](https://img.taocdn.com/s3/m/3ddc82d0dd88d0d233d46a79.png)
•建立或者使用从WS-Security, WS-ReliableMessaging, WS-Addressing, WS-Coordination和WS-Atomic Transaction获取优势的服务•当新建议出现时,使用Axis2的模块化结构来很容易的加入对它的支持内部流程要理解Axis2并且知道它做了些什么,你必须对Web services消息的生命周期有一个很好的认识。
通常,它看起来如下图所示:发送应用程序建立原始SOAP消息,这是一个包含消息头和消息体的XML消息。
如果系统需要使用例如WS-Addressing或者WS-Security之类的WS*建议,这个消息就会在离开发送者之前经过额外的处理。
一旦消息准备好了,他就会借助一个特别的传输器发送出去,例如HTTP,JMS等等。
消息沿着它的路径发送到接收者,接收者是借助传输监听器接收消息的。
(换句话说,如果应用程序没有运行HTTP监听器,那么它就将不会接收HTTP消息)再者,如果消息是需要使用WS-Security 或者其它建议的系统的一部分,那么为了检查凭证或者解密敏感信息,它需要一些额外的处理。
最后,一个派发者决定这个消息发送到的指定应用程序(或者其它组件,例如Java方法),并且把它发送给这个组件。
这个组件是一个完整的应用程序的一部分,这个应用程序是设计用来与这些来回发送的数据一起工作的。
Axis2如何处理SOAP消息Axis2可以处理一次事务中的发送者和接收者双方的过程。
从Axis2的角度看,结构如下:在一端,你有一个处理(发送或接收)消息的应用程序。
在中间,你有Axis2,或者,你可以有Axis2。
Web services的价值在于收发双方(任何一方都可以是服务段或者客户端)甚至不需要在同一个平台上,更不需要运行同一个应用程序。
假设Axis2在两边同时运行,过程如下:•发送者建立SOAP消息。
•Axis "handlers" 执行必要的操作,例如对相关消息进行WS-Security加密。
使用axis实现webservice
![使用axis实现webservice](https://img.taocdn.com/s3/m/1fa2aa3f866fb84ae45c8dfa.png)
使用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。
使用axis2构建WebService服务
![使用axis2构建WebService服务](https://img.taocdn.com/s3/m/41c448858762caaedd33d455.png)
使用axis2构建WebService服务以下文档将介绍是使用Tomcat6.0和Apache Axis2开发、部署和测试一个简单的WebService服务。
本文示例为最简单数据类型。
下一章将介绍复杂数据类型的传输。
WebService让一个程序可以透明地调用互联网程序,不管具体的实现细节。
只要WebService公开了服务接口,远程客户端就可以调用服务。
WebService是基于http协议的组建服务,WebService是分散式应用程序的发展趋势。
1.工作环境MyEclipse6.0.1 + JDK1.6 + Axis2-1.3其中Axis2-1.3需要下载Binary Distribution和WAR这两个文件。
目前Axis2的最高版本已到达1.5.2.安装Axis2将下载的Axis2-1.3 W AR文件解压缩,得到axis2.war文件。
将其拷贝到%Tomcat安装目录%webapps下即可。
3.检验安装启动(或重新启动)Tomcat,在地址栏中输入:http://localhost:8080/axis2点击Validate,显示Axis2 Happiness Page4.WebService中的服务器端(1)新建Java工程(2)新建服务器类,建立Hello.javapackage cn.hxyh.webservice;public class Hello {public String getHello() {System.out.println("Hello Service received");return"Hello world!" ;}}(3)在./bin下建立META-INF目录,新建service.xml文件<service name="Hello"><Description>helloword example description</Description><parameter name="ServiceClass"locked="false">cn.hxyh.webservice.Hello</parameter><operation name="getHello"><messageReceiverclass="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /></operation></service>(4)打包生成aar文件在命令符环境下,将目录转到./bin。
使用axis2进行WebService的开发
![使用axis2进行WebService的开发](https://img.taocdn.com/s3/m/08fc8acd76a20029bd642d99.png)
使用axis2进行WebService的开发使用axis2进行WebService的开发Apache Axis2 是Apache Axis SOAP 项目的后继项目。
此项目是Web 服务核心引擎的重要改进,目标是成为Web 服务和面向服务的体系结构(Service-Oriented Architecture,SOA)的下一代平台。
axis2 WebService开发分为服务端开发与客户端开发,服务端开发为对外提供服务,客户端开发为用户调用外部接口进行业务处理。
一、下载与安装1.下载下载地址:/axis2/java/core/download.cgi有以下下载列表:Binary Distribution zip | MD5 | PGPSource Distribution zip | MD5 | PGPWAR Distribution zip | MD5 | PGPDocuments Distribution zip | MD5 | PGP注:axis2-1.6.2-bin.zip里有axis2的jar包。
axis2-1.6.2-docs.zip里有详细的帮助文档。
axis2-1.6.2-src.zip里是源代码。
axis2-1.6.2-war.zip里是axis的管理平台,放到tomcat可直接使用。
注:本文用bin包进行命令行使用axis2,管理平台使用的是war包。
2.安装配置将axis2-1.6.2-bin.zip解压到本地目录D:\axis2-1.6.2设置环境变量。
【注:前提需要配置java环境变量】AXIS2_HOME 设置值D:\axis2-1.6.2Path 添加值%AXIS2_HOME%\bin二、服务端编写1.创建服务端的java项目testAsixServer。
编写类City与类User代码如下:[java] view plain copy package com.hsinghsu.model; public class City { private int cityCode;private String cityName; public int getCityCode() { return cityCode; } public void setCityCode(int cityCode) { this.cityCode = cityCode; } public String getCityName() { return cityName; } public void setCityName(String cityName){ this.cityName = cityName; } } [java] view plain copy package com.hsinghsu.model; public class User { private int id; private String name; private String password;private City city; public int getId(){ return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name){ = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public City getCity(){ return city; } public void setCity(City city) { this.city =city; } }编写服务类UserService。
Myeclpse6.0+Axis2 返回对象数组(List)的webservice例子
![Myeclpse6.0+Axis2 返回对象数组(List)的webservice例子](https://img.taocdn.com/s3/m/4b722ea0b0717fd5360cdc88.png)
【wayfoon】最近公司要求实现一个webservice调用,之前也接触过,但只是看看,没有动手试试,于是现在正式开始学习webservice。
之前参照网上的例子写了一个简单的say hello webservice例子。
传递的对象是string,而且只有一个方法;但实际应用中,需要传递一些复制的对象,比如:数组,集合,对象数组。
由于webservice 是通过xml来交互数据的,而且是不分平台的。
因此,java 中的List等集合类的哦是通过数组来实现的。
学习webservice最好不要从一种语言的角度(java、c#)来对待问题,如果非要看成一中语言,那看成是c语言吧。
简单的hello world 例子见/mlzry0612/articles/185209.html?opt=admin里面有详细的axis+myeclipse5.5安装部署,图文并茂。
不同myeclipse版本有所不同。
在演示例子前,你必须已经安装好了Axis,并且已经知道怎样使用axis,知道通过wsdl生成webservice代码和生成aar发布文件。
不会的话,先学习前面的hello 例子。
下面演示一个比较复杂的例子。
例子实现:输入一个string 返回得到一个对象数组(输入里面所有的元素对象),注意是对象数组。
每个对象对应一个bean 实体。
使用axis的好处是可以根据wsdl自动生成大部分代码。
因此,采用axis开发webservice 的实现关键在于生成wsdl文件的编写。
生成wsdl文件可以采用两种方式:第一种:直接新建wsdl再通过wsdl设计器来设计(也就是hello例子里面将的)如果你对wsdl不是很熟悉,而且,输入或输出的参数都非常复杂,不清楚输入输出的组成结构时,你可以采用第二种方法。
这种方式,可以让你使用你最熟悉的语言来表达你的意思。
以java为例,你可以将对个对象放到List里面来表达你要输出的值,这个在 wsdl里面是另外一种表达方式(没有List)。
webservice操作步骤
![webservice操作步骤](https://img.taocdn.com/s3/m/5df5a434ee06eff9aef80733.png)
一、可以使用axis提供的Java2WSDL功能生成所要发布类的WSDL,步骤如下:1.在你的eclipse或myeclipse的项目中找到你引入的axis.jar包,打开它,在其里面找到org.apache.axis.wsdl下面的Java2WSDL类,然后以Java application方式运行一下它2.打开菜单栏“run”-->“Debug”,在弹出框的左边找到“Java Application”项,在其里面你会看到“Java2WSDL”子项,点击它---> 在右面“Main”选项下有:“Project -- '你的项目名称' ,Main class -- 'org.apache.axis.wsdl.Java2WSDL'”,这些信息是自动进去的,不需要改动;打开“Arguments”选项,在其下“Program arguments”中输入:-o PbossProcessSheet.wsdl-P PbossProcessSheetPortType-b PbossProcessSheetSoapBinding-l http://localhost:8088/services/PbossProcessSheet-n /ai/webservice-pcom.ai.oms.inter.eoms.server=/ai/webservice-y rpccom.ai.oms.inter.eoms.server.interfaces.IEomsService然后点击"Run"按钮,就可以生成你要的wsdl文件了。
参数含义如下-o,output<WSDL file>指定输出的WSDL 文件名。
若没有指定,一个适当的默认WSDL 文件名将被写到当前目录。
-l,location<location>指定Web 服务位置的URL。
使用axis自动生成webservice客户端代码
![使用axis自动生成webservice客户端代码](https://img.taocdn.com/s3/m/1a615f7df18583d0496459c7.png)
利用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;}}}最后要感谢网上资源。
MYECLIPSE中用axis2插件开发web service
![MYECLIPSE中用axis2插件开发web service](https://img.taocdn.com/s3/m/01e897737fd5360cba1adb4e.png)
2011-04-05由/axis2/java/core/download.cgi下载axis2-1.4.1-bin.zip和axis2-1.4.1-war.zip(网络中诸多教程都是这个版本,便于发现问题时好解决)。
将axis2-1.4.1-war.zip解压后拷入tomcat\webapps,然后重启tomcat,tomcat会自动识别war文件并生成axis2文件夹。
然后输入http://localhost:8080/axis2/会看到欢迎界面。
由/dist/ws/axis2/tools/1_4_1/下载插件axis2-eclipse-codegen-wizard.zip和axis2-eclipse-service-archiver- wizard.zip两个文件,解压。
将这两个文件夹放入MyEclipse 8.5\dropins中,Axis2_Codegen_Wizard_1.3.0中增加2个jar backport-util-concurrent-3.1.jar、geronimo-stax-api_1.0_spec-1.0.1.jar,且修改plugin.xml增加这2个jar如图:Axis2_Codegen_Wizard_1.4.0其实是1.3.0版本文件夹改个名,且修改plugin.xml中<plugin>标签中的version为”1.4.0”通过命令行进入myeclipse.exe所在文件夹输入myeclipse.exe -vm "C:\Program Files\Java\jdk1.6.0_10\bin\java.exe" -clean -console -consoleLog -debug -vmargs -Xmx384M(注意查看自己的java路径)重启myeclipse通过开发服务端类来发布服务新建web project:sayhello首先我们先建一个包在src右键new->package,取名com在这个包下新建一个类Hellopackage com;/**服务端* @author tower**/public class Hello {public String helloworld(String name) { return"helloworld," + name;}}通过服务端类生成wsdl最终将要生成的hello.wsdl[自定义名称]放到src 目录下刷新后可见通过wsdl生成aar,发布服务再选择前述生成的wsdl,选择next点击load 最终将aar文件包输出到WEB-INF下,并命名将aar文件复制到tomcat/webapps/axis2/WEB-INF/services目录下。
快速上手指南 - 基于Eclipse Axis2 插件的Web Service开发[最新]【优秀】
![快速上手指南 - 基于Eclipse Axis2 插件的Web Service开发[最新]【优秀】](https://img.taocdn.com/s3/m/6cef07fbf78a6529657d5301.png)
快速上手指南 - 基于Eclipse Axis2 插件的Web Service开发[最新]【优秀】(文档可以直接使用,也可根据实际需要修订后使用,可编辑推荐下载)axis2创建web service(一)axis2 是新一代的web service开发工具,它会让你的web service开发变得轻松,快捷。
下面让我们以一个实际的例子来体验一下。
首先,工欲善其事,必先利其器。
就让我们先做好一些必备的准备工作吧。
1.下载axis2 的2进制的包和war,现在的最新版本是发布时间是2021-8-25地址分别是:2.把下载后的war放入tomcat的webapps目录里,然后启动tomcat,这样war包就会自动解压为目录axis2在浏览器中输入 ://localhost:8080/axis2/,如果一切正常你会看到下面的画面3,就开始准备一下axis2的eclispe的插件了。
axis2的eclispe插件分为2个,一个是帮助我们生成aar文件的,另一个是帮我们用wsdl文件生成stub代码的。
下载地址是下载完2个压缩文件后,可以直接把解压后的文件拷贝到plugins目录中,也可以在links目录中写文件路径的方式来安装插件,安装完插件后,打开eclipse,在package explorer 中点击右键--->选择new---->other如果安装正确你会看到这样准备工作就都做好了。
接下来就是正式开发了。
axis2创建web service(二)工具都已经准备齐全了。
我们来动手做一个小例子来小试牛刀!这一节我们先利用axis2来发布一个web service 的服务,然后在下一节我们做一客户端来调用这个服务。
我们的服务很简单的,就是输入一个字符串,然后打印出一段字符串。
代码很简单,主要是测试用。
Java代码1.2.3.public class SimpleServer {4.5. /**6. * 简单的测试方法7. *8. */9. public String simpleMethod(String name) {10. return name + "Say this is a Simple method ^-^";11. }12.13.}主要的过程就是如何利用axis2的eclispe插件来发布这个服务啦。
Eclipse配置 Axis2并开发一个简单的webservice程序
![Eclipse配置 Axis2并开发一个简单的webservice程序](https://img.taocdn.com/s3/m/99302c1b52ea551810a68746.png)
一.在Eclipse中配置Axis2插件。
1.下载Axis2插件(Axis2官网:/axis2/java/core/download.html)2. 配置Eclipse Axis2插件把axis2-eclipse-codegen-plugin-1.7.1.zip和axis2-eclipse-service-plugin-1.7.1.zip文件里面的jar文件解压出来,放到eclipse目录下的dropins文件夹下,并新建一个txt文件,写入dropins目录的绝对路径,保存后更改文件格式为.link。
重启Eclipse,然后点击File-> New->Other->Axis2 Wizards即可看到axis2功能是否配置成功。
二.用Eclipse开发Axis2服务端1.解压axis2-1.7.1-bin.zip和axis2-1.7.1-war.zip文件,axis2-1.7.1-bin的解压文件夹随便放在一个目录下即可,axis2-1.7.1-war解压后的axis2.war文件放在tomcat目录的webapp文件夹下。
启动tomcat并输入http://localhost:8080/axis2即可看到如下画面。
2.新建Java Project,目录如下图所示(该示例主要展示了如何把配置文件也打包进aar文件),把axis2-1.7.1-bin的lib目录下的全部.jar文件(其实这些包是给客户端使用的,而且只需要其中一部分即可,为了方便才全部复制)全部复制到lib目录下,然后build path进项目中,建立如下文件:com.axis.server包下的文件AxisServer.java和User.java;resources 包下的文件application.properties。
3.生成aar文件:File->New->Other->Axis2 Wizards->Axis2 Service Archiver,并按下图流程进行即可生成aar文件。
Axis2 webservice 发布教程 ,整合到自己的项目中
![Axis2 webservice 发布教程 ,整合到自己的项目中](https://img.taocdn.com/s3/m/34cc4d0803d8ce2f0066234a.png)
Web Project项目整合Axis2网上的教程全都是生成了.aar文件后,复制到axis2\WEB-INF\services\下面,这样给人的感觉就是自己的服务还得靠Axis2.war包才能运行,这不扯蛋吗?这里教大家把Webservice 发布到自己的项目中。
1.下载Axis2.war ,复制web-inf/services目录到自己的项目WEB-INF下,2.打开Myeclipse 新建一个web Project复制Axis2.war 包下的所有JAR包到项目lib目录下。
3.在项目的WEB.XML 中添加如下配置<!-- Axis2配置--><servlet><servlet-name>AxisServlet</servlet-name><servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet><servlet-name>AxisAdminServlet</servlet-name><servlet-class>org.apache.axis2.webapp.AxisAdminServlet</servlet-class></servlet><servlet-mapping><servlet-name>AxisServlet</servlet-name><url-pattern>/servlet/AxisServlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>AxisServlet</servlet-name><url-pattern>*.jws</url-pattern></servlet-mapping><servlet-mapping><servlet-name>AxisServlet</servlet-name><url-pattern>/services/*</url-pattern></servlet-mapping><servlet-mapping><servlet-name>AxisAdminServlet</servlet-name><url-pattern>/axis2-admin/*</url-pattern></servlet-mapping><mime-mapping><extension>inc</extension><mime-type>text/plain</mime-type> </mime-mapping>4.编写Webservice 服务端类5.发布服务右击-新建-other点击下一步这里选择编译后的Class目录,工作空间下的项目编译目录,点击下一步。
Axis2对于不同开发环境应用详解
![Axis2对于不同开发环境应用详解](https://img.taocdn.com/s3/m/d0d3774d2b160b4e767fcf88.png)
Apache Axis2 插件安装以及实现WebService接口一、Eclipse安装Axis2插件及应用1、环境准备:Eclipse – j2ee需要的Axis2压缩包文件解压后的文件名为axis2-1.4.1目录解压后的文件结构如图:2、配置EclipseEclipse自带了开发WebService的工具第一步:打开Eclipse-->点击菜单windows-->Preferences-->WebServices-->Axis2Preferences-->设置Axis2 runtime location为Axis2下载后并解压的核心包的位置:选择后Eclipse会自动检测包是否正确。
如果successfully提示表示设置正确第二步:在Eclipse创建一个WebProject时,点击Configuration的Modify会出现下图界面:勾选Axis2 Web Services按OK。
回到新建WebProject界面,完成项目创建。
创建成功后会发现在WEB-INF文件夹下会多出一个axis2-web的文件夹,这个是Axis2的项目文件夹。
现在启动服务器会抛出异常,这是因为Eclipse在自动加载生成该项目时有几个问题需要手动修复,下面分别列出:问题一:会抛出异常:ng.ClassNotFoundException:org.apache.axis2.transport.http.AxisAdminServlet是因为生动生成的web.xml文件中所指定的AxisAdminServlet包路径有错。
自动生成的源码如下:注意红色字体部分,我们可以去看一下所下载的Axis2的源包。
AxisAdminServlet类所在的包路径并不在下列这个路径中org.apache.axis2.transport.http,该类是属于包org.apache.axis2.webapp下。
用Axis2开发Web Service及客户端
![用Axis2开发Web Service及客户端](https://img.taocdn.com/s3/m/05a37e6769eae009581becd5.png)
用Axis2开发Web Service及客户端在《使用Eclipse的Axis1.4插件开发Web Service及客户端》介绍的Axis是用的Axis1.x,而Axis2是改进版本,进行了重新的设计,应该是Axis的第二代,本文介绍Axis2的使用方法。
/axis2/是Axis2的主页,写这篇文章的时候最新版本是1.5,从/axis2/download/1_5/download.cgi下载axis2-1.5-bin.zip、axis2-1.5-war.zip。
axis2-1.5-war.zip是web发布版本,可以在网页上进行Web Service的动态部署,提供Web Service服务。
解压缩后把axis2.war放到tomcat的webapps下面,启动tomcat,在网页中输入http://localhost:8080/axis2(取决于tomcat的设置)就可以进行操作了。
这方面的资料很多,就不详细介绍了。
下面介绍使用Eclipse插件开发的方法,环境与《使用Eclipse的Axis1.4插件开发Web Service及客户端》的相同。
启动Eclipse后,首先设置Axis2的主目录,需要先解压缩axis2-1.5-bin.zip,然后把解压缩之后的路径填入Eclipse的Window|Preferences|Web Services|Axis2 Preferences的界面上,如下图所示:图1在Eclipse中设置Axis2的runtime建立一个简单的类:package demo.axis; public class User{public String sayHello(String userName){return "hello " + userName;}}把这个类发布为Web Service的步骤与《使用Eclipse 的Axis1.4插件开发Web Service及客户端》中的相同,只是要注意选择Axis2,生成之后的目录结构是:图2生成Web Service后的目录结构但生成之后的项目中缺少.jar文件,可以把%AXIS2-HOME%/lib下的所有文件复制到项目的WEB-INF/lib下面,部署到tomcat就可以运行了,在浏览器中输入http://localhost:8080/Axis2ServerDemo/services/User?wsd l就可以看到发布的Web Service的wsdl了。
myeclipse10 axis21.62开发webservice手记
![myeclipse10 axis21.62开发webservice手记](https://img.taocdn.com/s3/m/bd10b750fe4733687e21aa2b.png)
myeclipse 10 +Axis2 1.62 开发WebService手记myeclipse 10 +Axis2 1.62 开发WebService手记由于临时需求,不得不用java来开发一个webservice,之前对java webservice一片空白。
临时查资料,耗费近一天,终于搞定,效率是慢了点。
呵呵。
首先配置Tomcat 中WebService解析容器,下载Axis2-1.6.2 注意分别下载红框的两个文件其中注意将axis2-1.6.2-war.zip 中axis2.war解压出,放到tomcat 中webapps中,然后在浏览器中输入http://localhost:8080/axis2/ 测试容器是否成功。
(注:浏览器运行会自动将war文件解压出来一个文件夹axis2 包含axis2-web、META-INF、org、WEB-INF)其次下载Myeclipse 10中打包和调用的Axis2的插件:1:axis2-eclipse-codegen-wizard-1.4.zip2:axis2-eclipse-service-archiver-wizard-1.4.zip可以去这里/dist/ws/axis2/tools/1_4_1/也可以去/axis2/java/core/tools/index.html 插件下载完后,分别解压后记住:将axis2-eclipse-codegen-wizard-1.4 和axis2-eclipse-service-archiver-wizard-1.4放到myEclipse 10 所在目录的dropins文件夹下,Eclipse是在plugins文件夹下。
重启myEclipse 10 右键项目会发现New->Other-> 输入axis2会发现如下图说明调用成功,介绍下:这里axis2 code generator 看字面意思就知道是将webservice文件wsdl文件生成代码的一个向导而axis2 service archiver 这个是将java类生成为webservice 的向导。
myeclipse10使用axis2开发webservice
![myeclipse10使用axis2开发webservice](https://img.taocdn.com/s3/m/7d96a722590216fc700abb68a98271fe910eaf61.png)
1. 下载Axis2插件和部署环境Axis2官方网站:/axis2/java/core/index.html2. 为MyEclipse10安装Axis2开发插件,解压codegen-1.6.2.zip和service-1.6.2.zip,复制解压后的文件到MyEclipse10安装目录的dropins目录下,并新建一个记事本文件,命名为:axis2.link,写入内容:path=D:\\Program Files\\MyEclipse 10.1\\MyEclipse 10\\dropins。
重启MyEclipse10,即可看到Axis2插件已经安装成功3. 配置部署环境。
解压axis2-1.6.2-war.zip文件,把得到的axis2.war文件复制到Tomcat安装目录下的webapp文件夹下,并启动Tomcat。
在浏览器输入网址:http://localhost:8080/axis2/,看到如下界面,表示部署环境配置成功。
4. 开发webservice服务端。
新建web project(不能是java project)。
并添加com.server包,在包下建立两个类:DoubleArith.java和FloatArith.java,并写入以下内容。
生成Axis2服务端部署文件,DoubleArith.aar和FloatArith.aar。
先运行Axis2Server,使程序在classes文件夹下生成DoubleArith.class和FloatArith.class文件,因为这两个文件是生成aar 文件的必备文件这样就在D:\Run目录下生成DoubleArith.aar文件。
同理,可以生成FloatArith.aar。
把DoubleArith.aar和FloatArith.aar文件从D:\Run文件夹复制到Tomcat\webapp\axis2\WEB-INF\services目录下。
axis2_WebService_开发手册
![axis2_WebService_开发手册](https://img.taocdn.com/s3/m/ac076c73168884868762d62c.png)
Axis2 WebServiceAxis的简单准备Axis的入门实例Axis复杂对象类型的WebServiceAxis的辅助工具发布、调用WebServiceAxis WebService会话Session的管理Axis用控制台Dos命令发布WebServiceAxis跨多个WebService管理SessionAxis用Spring的JavaBean发布WebServiceAxis异步调用WebServiceAxis 的Module模块Axis使用SoapMonitar监视WebService的请求和响应信息一、准备工作1、开发准备首先需要下载axis2的相关jar包,到axis的官方网站即可获得开发的依赖包。
下载地址:/axis2/java/core/download.cgi现在最高的版本是1.5.4的然后你需要下载官方提供的axis的eclipse插件工具,可以帮助我们打包(aar)及其生产客户端调用代码。
下载页面:/axis2/java/core/tools/index.htmlService Archive Wizard - Eclipse Plug-inCode Generator Wizard - Eclipse Plug-in2、安装eclipse插件如果你的eclipse插件安装成功后,会看到如下效果:3、分析axis2-bin文件目录结构下载下来的axis2的依赖库,其中有一个axis2-1.5.3-bin.zip的库文件,目录结构如下:bin文件夹是axis2的常用工具,其中有将wsdl文件转换成客户端调用的wsdl2java工具及将java转换成wsdl文件的工具conf是axis2的配置文件lib运行所要的依赖库repository是发布过的axis服务和文件sample是示例webapp是web文件和jsp页面等4、我们需要将下载下来的axis2-1.5.3-war.zip中的axis2.war这个文件放在我们的tomcat目录下,启动tomcat就会把war文件转成一个可以跑起来的axis2的项目。
java webservice axis2简单开发实例
![java webservice axis2简单开发实例](https://img.taocdn.com/s3/m/6fadb07302768e9951e738a4.png)
Web Service学习之axis看着网上的资料学习了一下,做点笔记以防以后忘记。
一、准备工作:到axis官方网站下载相应的jar包,我下的是1.4final版。
/axis/二、建立项目:直接在MyEclipse中建立了一个web项目。
将相应的jar包拷贝到lib文件夹下三、创建一个WebService服务直接创建一个类HelloClient.javaJava代码1.package com;2.3.public class HelloServer {4. public String sayHello(String name) {5. return "Hello " + name;6. }7.}axis支持两种方式创建,一种是将编写好的java文件改为*.jws文件。
个人觉得这样不好,所以就用另外一种,采用在server-config.xml文件中配置的方式。
注意:该文件位置为WEB-INF目录下Xml代码1.<?xml version="1.0"encoding="UTF-8"?>2.<deployment xmlns="/axis/wsdd/"3.xmlns:java="/axis/wsdd/providers/java">4.<globalConfiguration>5.<parameter name="adminPassword"value="admin"/>6.<parameter name="enableNamespacePrefixOptimization"7.value="false"/>8.<parameter name="dotNetSoapEncFix"value="true"/>9.<parameter name="disablePrettyXML"value="true"/>10. <parameter name="sendMultiRefs"value="true"/>11. <parameter name="sendXsiTypes"value="true"/>12. <parameter name="attachments.implementation"13. value="org.apache.axis.attachments.AttachmentsImpl"/>14. <parameter name="sendXMLDeclaration"value="true"/>15.16. <requestFlow>17. <handler type="java:org.apache.axis.handlers.JWSHandler">18. <parameter name="scope"value="session"/>19. </handler>20. <handler type="java:org.apache.axis.handlers.JWSHandler">21. <parameter name="scope"value="request"/>22. <parameter name="extension"value=".jwr"/>23. </handler>24. </requestFlow>25. </globalConfiguration>26.27. <handler name="LocalResponder"28. type="java:org.apache.axis.transport.local.LocalResponder"/>29. <handler name="URLMapper"30. type="java:org.apache.axis.handlers.http.URLMapper"/>31. <handler name="Authenticate"32. type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>33.34. <service name="AdminService"provider="java:MSG">35. <parameter name="allowedMethods"value="AdminService"/>36. <parameter name="enableRemoteAdmin"value="false"/>37. <parameter name="className"value="org.apache.axis.utils.Admin"/>38. <namespace>/axis/wsdd/</namespace>39. </service>40.41. <service name="Version"provider="java:RPC">42. <parameter name="allowedMethods"value="getVersion"/>43. <parameter name="className"value="org.apache.axis.Version"/>44. </service>45. <SPAN style="COLOR: #ff0000"><service name="HelloServer"provider="java:RPC">46. <parameter name="allowedMethods"value="*"/>47. <parameter name="className"value="com.HelloServer"/>48. </service></SPAN>49.50. <transport name="http">51. <requestFlow>52. <handler type="URLMapper"/>53. <handler54. type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>55. </requestFlow>56. <parameter name="qs:list"57. value="org.apache.axis.transport.http.QSListHandler"/>58. <parameter name="qs:wsdl"59. value="org.apache.axis.transport.http.QSWSDLHandler"/>60. <parameter name="qs:method"61. value="org.apache.axis.transport.http.QSMethodHandler"/>62. </transport>63.64. <transport name="local">65. <responseFlow>66. <handler type="LocalResponder"/>67. </responseFlow>68. </transport>69.</deployment>web.xml文件中的配置如下Xml代码1.<?xml version="1.0"encoding="UTF-8"?>2.<web-app version="2.5"xmlns="/xml/ns/javaee"3.xmlns:xsi="/2001/XMLSchema-instance"4.xsi:schemaLocation="/xml/ns/javaee5. /xml/ns/javaee/web-app_2_5.xsd">6.<listener>7.<listener-class>8. org.apache.axis.transport.http.AxisHTTPSessionListener9.</listener-class>10. </listener>11.12. <servlet>13. <servlet-name>AxisServlet</servlet-name>14. <display-name>Apache-Axis Servlet</display-name>15. <servlet-class>16. org.apache.axis.transport.http.AxisServlet17. </servlet-class>18. </servlet>19.20. <servlet>21. <servlet-name>AdminServlet</servlet-name>22. <display-name>Axis Admin Servlet</display-name>23. <servlet-class>24. org.apache.axis.transport.http.AdminServlet25. </servlet-class>26. <load-on-startup>100</load-on-startup>27. </servlet>28.29. <servlet>30. <servlet-name>SOAPMonitorService</servlet-name>31. <display-name>SOAPMonitorService</display-name>32. <servlet-class>33. org.apache.axis.monitor.SOAPMonitorService34. </servlet-class>35. <init-param>36. <param-name>SOAPMonitorPort</param-name>37. <param-value>5001</param-value>38. </init-param>39. <load-on-startup>100</load-on-startup>40. </servlet>41.42. <servlet-mapping>43. <servlet-name>AxisServlet</servlet-name>44. <url-pattern>/servlet/AxisServlet</url-pattern>45. </servlet-mapping>47. <servlet-mapping>48. <servlet-name>AxisServlet</servlet-name>49. <url-pattern>*.jws</url-pattern>50. </servlet-mapping>51.52. <servlet-mapping>53. <servlet-name>AxisServlet</servlet-name>54. <url-pattern>/services/*</url-pattern>55. </servlet-mapping>56.57. <servlet-mapping>58. <servlet-name>SOAPMonitorService</servlet-name>59. <url-pattern>/SOAPMonitor</url-pattern>60. </servlet-mapping>61. <welcome-file-list>62. <welcome-file>index.jsp</welcome-file>63. </welcome-file-list>64.</web-app>四、部署启动tomcat:在浏览器地址栏输入http://localhost:8080/axisWebServiceServer/services可以看到已有的WebServicehttp://localhost:8080/axisWebServiceServer/services/HelloServer?wsdl 可以看到自己写的WebService五、测试调用WebServiceJava代码1.package com;2.3.import .MalformedURLException;4.import java.rmi.RemoteException;5.6.import javax.xml.rpc.ServiceException;7.8.import org.apache.axis.client.Call;9.import org.apache.axis.client.Service;11.public class HelloClient {12.13. public static void main(String[] args) {14. String status = "aaaaaaa";15. String endPoint = "http://localhost:8080/axisWebServiceServer/services/HelloServer";16. String operation = "sayHello";17. Service service = new Service();18.19. try {20. Call call = (Call) service.createCall();21. call.setTargetEndpointAddress(new .URL(endPoint));22. call.setOperationName(operation);23. String xml = (String) call.invoke(new Object[] { status });24. System.out.println(xml);25. } catch (ServiceException e) {26. e.printStackTrace();27. } catch (MalformedURLException e) {28. e.printStackTrace();29. } catch (RemoteException e) {30. e.printStackTrace();31. }32.33. }34.35.}成功!!java实现webservice实例一:首先创建个WEB工程,然后:/axis/网站下载Axis安装包.当然还依赖其他包的,我这里在附件里上传了所有应用到得包,方便大家。
Eclipse3.2+MyEclipse5.5M1+axis2_1.1.1+tomcat5.5 开发Web Services
![Eclipse3.2+MyEclipse5.5M1+axis2_1.1.1+tomcat5.5 开发Web Services](https://img.taocdn.com/s3/m/fa72f4bbfd0a79563c1e72b4.png)
在网上看到的由--呼必斯哈拉图--写的"Apache AXIS 开发Web Services Step By Step",跟着做了一遍。
非常感谢呼必斯哈拉图,写得非常的详细,图文并茂。
但是,我的环境和他文中的不太一样,所以根据自己的环境重写如下。
一、环境准备1.1软件下载准备Tomcat 5.5下载地址:/download-55.cgi#5.5.20Axis War包:/apache/ws/axis2/1_1_1/axis2.warAxis Eclipse plug-in(代码生成工具和打包工具):/ws/axis2/tools/1_1_1/axis2-eclipse-codegen-wizard.zip /ws/axis2/tools/1_1_1/axis2-eclipse-service-archiver-wiz ard.zipEclipse 3.2:/MyEclipse5.5M1:/1.2安装A.首先搭建开发环境,将下载的Eclipse解压缩到一个目录,D:eclipse-SDK-3.2-win32。
B.将下载到的Axis 的两个plug-in解压缩到D:Axis-Plugin-Direclipseplugins目录下。
C.在eclipse目录下创建D:eclipse-SDK-3.2-win32eclipselinks,新建文件名为:axis-eclipse-plugin.link内容为:path=D:Axis-Plugin-DirD.安装MyEclipse5.5M1,将eclipse目录指向D:eclipse-SDK-3.2-win32,删除D:eclipse-SDK-3.2-win32eclipseconfiguration下的org.eclipse.update目录。
然后启动MyEclipse,选择“File->New->Other”可以看到如下的两个界面。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2011-04-05
由/axis2/java/core/download.cgi下载axis2-1.4.1-bin.zip和axis2-1.4.1-war.zip(网络中诸多教程都是这个版本,便于发现问题时好解决)。
将axis2-1.4.1-war.zip解压后拷入tomcat\webapps,然后重启tomcat,tomcat会自动识别war文件并生成axis2文件夹。
然后输入http://localhost:8080/axis2/会看到欢迎界面。
由/dist/ws/axis2/tools/1_4_1/下载插件axis2-eclipse-codegen-wizard.zip和axis2-eclipse-service-archiver- wizard.zip两个文件,解压。
将这两个文件夹放入MyEclipse 8.5\dropins中,Axis2_Codegen_Wizard_1.3.0中增加2个jar backport-util-concurrent-3.1.jar、geronimo-stax-api_1.0_spec-1.0.1.jar,且修改plugin.xml增加这2个jar如图:
Axis2_Codegen_Wizard_1.4.0其实是1.3.0版本文件夹改个名,且修改plugin.xml中<plugin>标签中的version为”1.4.0”
通过命令行进入myeclipse.exe所在文件夹输入
myeclipse.exe -vm "C:\Program Files\Java\jdk1.6.0_10\bin\java.exe" -clean -console -consoleLog -debug -vmargs -Xmx384M
(注意查看自己的java路径)
重启myeclipse
通过开发服务端类来发布服务
新建web project:sayhello
首先我们先建一个包在src右键new->package,取名com
在这个包下新建一个类Hello
package com;
/**服务端
* @author tower
*
*/
public class Hello {
public String helloworld(String name) { return"helloworld," + name;
}
}
通过服务端类生成wsdl
最终将要生成的hello.wsdl[自定义名称]放到src 目录下
刷新后可见
通过wsdl生成aar,发布服务
再选择前述生成的wsdl,
选择next
点击load 最终将aar文件包输出到WEB-INF下,并命名
将aar文件复制到tomcat/webapps/axis2/WEB-INF/services目录下。
启动tomcat将会看到所发布的服务:HelloService
浏览器输入http://127.0.0.1:8080/axis2/services/listServices
开发客户端stub类来调用服务通过wsdl生成java客户端类:
最终生成客户端类:HelloStub.java
(如果出错,查看是否将axis的lib文件夹中的所有jar文件复制到此工程webroot/web-inf/lib 中)
客户端【Jsp页面或者测试类】调用服务
编写java测试类,通过客户端stub调用服务
package test;
import java.rmi.RemoteException;
import com.client.HelloStub;
import com.client.HelloStub.Helloworld;
import com.client.HelloStub.HelloworldResponse;
/**测试类
* @author tower
*
*/
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
//调用HelloService服务
HelloStub helloStub=new HelloStub("http://127.0.0.1:8080/axis2/services/HelloService");
Helloworld helloworld=new Helloworld();
helloworld.setName("O(∩_∩)O~");
HelloworldResponse resp= helloStub.helloworld(helloworld);
System.out.println(resp.get_return());
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Run 这个test之后显示
helloworld,O(∩_∩)O~。