在EclipseJEE(mars)中使用Axis2开放WebService服务端接口和建立WebService客户端
来源:互联网 发布:sybase执行sql文件 编辑:程序博客网 时间:2024/05/23 21:32
准备工具:
1,eclipse-jee-mars-1-win32,
2,tomcat6
3,axis2-1.6.4-bin.zip,axis2-1.6.4-war.zip,axis2-eclipse-codegen-plugin-1.6.4.zip
开发流程:
采用Axis2使用SOAP协议保证WebService安全性的前提下开发WebService,
一般来说,首先总是某个服务提供端开放某个处理类或方法的接口(wsdl文件以及xsd或URL),另外一个服务调用端根据这个接口生成客户端代码,然后根据生成本地代码入口(一般需要服务实际URL)方法发送请求。
准备工作:
0,解压axis2工具包axis2-1.6.4-bin.zip
1,在EclipseJEE中安装好Axis2 的插件“Code generator”
2,在EclipseJEE菜单 /Window/Preferences/Web Services/Axis2 Preferences/Axis2 Runtime 中设置好"Axis2 Runtime location",是axis2-1.6.4-bin.zip解压后的路径。
3,解压axis2-1.6.4-war.zip,把.war文件放置到tomcat的webapp目录,tomcat自动解压
服务端步骤:
1,在EclipseJEE中新建一个"Dynamic Web Project",比如testws,编辑一个java类,用于开放WebService接口,如下代码:
package com.m;public class SayHi {public String sayHello(String name){return "Hello, "+name+".";}public String saySorry(String name){return "Sorry,"+name+".";}public String getWorld(){return "Hello,World";}}
2,修改/testws/WebContent/WEB-INF/web.xml为如下内容:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>testws9</display-name> <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-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> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list></web-app>
3,解压axis2-1.6.4-war.zip后,将其中conf、lib、modules复制到工程中的WEB-INF目录中,axis2-web复制到WebContent目录下
4,建立services.xml文件(根据工具包中的文件修改axis2-1.6.4\samples\pojo\src\META-INF\services.xml),在services.xml文件中,定义服务名service name和服务需要访问的类ServiceClass,内容如下:
<?xml version="1.0" encoding="UTF-8"?><service name="SayHi" scope="application"> <description> POJO Service </description> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> </messageReceivers> <parameter name="ServiceClass">com.m.SayHi</parameter></service>
5,把步骤4建立的services.xml文件放在新建的路径中:\WebContent\WEB-INF\services\SayHi\META-INF
6,把testws项目作为web项目在tomcat runtime中运行,
在浏览器中输入"http://localhost:8080/testws/services/SayHi?xsd"查看请求响应数据描述文件,
在浏览器中输入"http://localhost:8080/testws/services/SayHi?wsdl"查看webservice接口描述文件,
能反映出如下xml描述内容 表示WebService已经正常开放。
<?xml version="1.0"?>-<xs:schema targetNamespace="http://m.com" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://m.com" xmlns:ns1="http://org.apache.axis2/xsd" elementFormDefault="qualified" attributeFormDefault="qualified">-<xs:element name="sayHello">-<xs:complexType>-<xs:sequence><xs:element name="name" type="xs:string" nillable="true" minOccurs="0"/></xs:sequence></xs:complexType></xs:element>-<xs:element name="sayHelloResponse">-<xs:complexType>-<xs:sequence><xs:element name="return" type="xs:string" nillable="true" minOccurs="0"/></xs:sequence></xs:complexType></xs:element>-<xs:element name="saySorry">-<xs:complexType>-<xs:sequence><xs:element name="name" type="xs:string" nillable="true" minOccurs="0"/></xs:sequence></xs:complexType></xs:element>-<xs:element name="saySorryResponse">-<xs:complexType>-<xs:sequence><xs:element name="return" type="xs:string" nillable="true" minOccurs="0"/></xs:sequence></xs:complexType></xs:element>-<xs:element name="getWorld">-<xs:complexType><xs:sequence/></xs:complexType></xs:element>-<xs:element name="getWorldResponse">-<xs:complexType>-<xs:sequence><xs:element name="return" type="xs:string" nillable="true" minOccurs="0"/></xs:sequence></xs:complexType></xs:element></xs:schema>
客户端生成调用代码、测试步骤:
方法一:
1,新建一个Java工程
2,New/ Web Services/Web Service Client/
3,Service Definition选择WSDL路径或URL
产生如下文件:
SayHi.java
SayHiLocator.java
SayHiPortType.java
SayHiPortTypeProxy.java
SayHiSoap11BindingStub.java
4,调用测试代码
package com.m;import java.net.MalformedURLException;import java.net.URL;import java.rmi.RemoteException;import javax.xml.rpc.ServiceException;public class Testws2 {public static void main(String[] args) {try {String req = "I'm merrick!";SayHiLocator s = new SayHiLocator();String res = s.getSayHiHttpSoap11Endpoint(new URL("http://localhost:8080/testws/services/SayHi")).sayHello(req);System.out.println("Send: " + req);System.out.println("Receive: "+res);} catch (MalformedURLException | ServiceException | RemoteException e) {// TODO Auto-generated catch blocke.printStackTrace();} }}测试正确情况:
Send: I'm merrick!
Receive: Hello, I'm merrick!.
方法二:
1,新建一个Java工程
2,菜单选择"Axis2 Code Generator",
3,选择“从WSDL文件产生Java源代码”,
4,输入“WSDL文件路径”(绝对路径),
5,默认,
6,Output画面选择新建的Java工程为代码产生目的地,选择“添加Axis2 库文件”(bin工具包)。
产生如下文件:
ExtensionMapper.java
GetWorld.java
GetWorldResponse.java
SayHello.java
SayHelloResponse.java
SayHi.java
SayHiCallbackHandler.java
SayHiStub.java
SaySorry.java
SaySorryResponse.java
7,测试调用代码
SayHelloResponse r = null;SaySorryResponse r2 = null;GetWorldResponse r3 = null;SayHiStub sv = new SayHiStub("http://localhost:8080/testws9/services/SayHi");SayHello sh = new SayHello();sh.setName("ABC");r = sv.sayHello(sh);SaySorry sr = new SaySorry();sr.setName("DEF");r2 = sv.saySorry(sr);GetWorld gw = new GetWorld();r3 = sv.getWorld(gw);System.out.println(r.get_return());System.out.println(r2.get_return());System.out.println(r3.get_return());
其他客户端调用方法,参考\axis2-1.6.4\samples\userguide\src\userguide\clients
- 在EclipseJEE(mars)中使用Axis2开放WebService服务端接口和建立WebService客户端
- WebService--使用Axis2创建服务端和客户端
- 使用axis2生成webservice服务端和客户端
- 用myeclipse建立webservice服务端和客户端
- 利用myeclipse建立webservice服务端和客户端
- 使用Axis2开发webservice服务端接口+axis开发的客户端调用
- WebService接口客户端(axis2)
- 用AXIS2发布WebService的方法 使用eclipse插件生成服务端和客户端
- 用AXIS2发布WebService的方法 使用eclipse插件生成服务端和客户端
- webservice服务端和客户端
- Axis2开发WebService服务端及客户端
- 使用java6开发WebService服务端和客户端
- 在项目中使用AXIS2发布WebService
- 使用axis2发布webservice接口
- 使用eclipse建立webservice服务和客户端
- 使用eclipse建立webservice服务和客户端
- 使用eclipse建立webservice服务和客户端
- 运用CXF开发webService接口服务端和客户端
- 做个高效率的程序猿,使用VS内置的ASP.NET Web 服务器调试
- POJ 1330 Nearest Common Ancestors(在线倍增LCA)
- node测试相关工具
- python数据结构:bitmap,list链表,树,图
- HTML5 localStorage本地存储实际应用举例
- 在EclipseJEE(mars)中使用Axis2开放WebService服务端接口和建立WebService客户端
- 【仿】程序员的表白-源码HTML5+JQ
- Android自定义View 完整版
- 从头认识java-16.3 IO的典型用法
- CSS学习之实例
- Android 4.0.4系统下实现apk的静默安装和启动
- Java 数组实现冒泡排序算法
- Android中获取应用程序(包)的大小-----PackageManager的使用(二)
- 2015阿里安全峰会