Web工程集成Axis2发布WebService

Web工程集成Axis2发布WebService

webserviceAxis2eclipse

1.新建一个javaweb项目,如Web,然后在web.xml中添加如下配置:
<servlet>
<display-name>Apache-Axis Servlet</display-name>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
2.下载Axis2的war包然后解压,把WEB-INF下面的conf、lib、modules 三个文件夹复制到Web项目的WEB-INF目录中。
到Web项目的WEB-INF目录中新建一个services文件夹,在services文件夹下新建一个webservice的根目录(目录名即你所提供的webservice名),再在下面新建META-INF文件夹,并存放services.xml文件,目录机构如下:
services.xml如下:
<service name="WebService" >
<description>
Please Type your service description here
</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.yourcompany.service.YourClass</parameter>
</service>
注意上面的ServiceClass要改你对应的服务提供类
3.在src文件夹下编写你的service业务逻辑,编译。
最后在启动流浪器输入地址即可查看到信息,如:
http://localhost:8080/Web项目名/services/service名?wsdl
4相关工具推荐:
soapUI及Eclipse的两个插件Axis2 CodeGenerator和Axis2 Services Archiver

 

Jar –xvf axis2.war



目的:使用Axis2发布webservice并使用客户端调用.

1.到http://ws.apache.org/axis2/1_4_1/installationguide.html上面下载 axis2-1.4.1-bin.zip ,里面有JKD,Tomcat版本的要求.

2.下载到的axis2-1.4.1-bin.zip解压到axis2-1.4.1-bin目录.Copy lib目录到已有工程目录.

3.web.xml增加servlet配置.

<servlet><description></description><display-name>Apache-Axis Servlet</display-name><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>/services/*</url-pattern></servlet-mapping>

4.启动已有问工程,测试是否报错.若有 javax.xml.包找不到的错误,建议使用 jdk1.6.或者找到jar包加载进去.

5.增加一个Class.

package example;public class HelloWorldService {public HelloWorldService() {}public String hello(String userName) {return "Hello axis2 service!" + userName;}public String helloNoParam() {return "测试!";}}

6.手工配置 services.xml.(目录结构为:WEB-INF/services/HW/META-INF/services.xml,其中HW可以命名为其他.文件夹不存在的就新增.)

<serviceGroup>

<service name="HelloWorldService">

<description>Hello World Service</description>

<parameter name="ServiceClass" locked="false">example.HelloWorldService</parameter>

<operation name="hello" mep="http://www.w3.org/2004/08/wsdl/in-out">

<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />

</operation>

<operation name="helloNoParam">

<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />

</operation>

</service>

</serviceGroup>

 

7.重新打包并在Tomcat中运行.在IE中输入http://localhost:8080/testProject/services/HelloWorldService?wsdl,可以看到发布的服务,xml.有的浏览器中只会显示服务名,如Google Chrome.

8.使用Java调用刚发布的接口.

首先,使用个通用类(在某论坛里面看到的一个兄弟的通用方法.)

package example;

 

import java.util.Iterator;

 

import javax.xml.namespace.QName;

 

import org.apache.axiom.om.OMElement;

import org.apache.axis2.addressing.EndpointReference;

import org.apache.axis2.client.Options;

import org.apache.axis2.rpc.client.RPCServiceClient;

 

public class Axis2CommonClient {

public Axis2CommonClient() {

 

}

 

/**

* @param srvcUrl

*            访问的url

* @param namespace

*            命名空间

* @param operateName

*            你想调用的方法

* @param param

*            要传入的参数。

* @return

* @throws Exception

*/

public Object excute(String srvcUrl, String namespace, String operateName,

Object param[]) throws Exception {

QName qname = new QName(namespace, operateName);

RPCServiceClient client = new RPCServiceClient();

Options options = new Options();

options.setTo(new EndpointReference(srvcUrl));

options.setAction("urn:" + operateName);

client.setOptions(options);

OMElement element = client.invokeBlocking(qname, param);

if (element != null && !"".equals(element)) {

Iterator<?> values = element.getChildrenWithName(new QName(

namespace, "return"));

while (values.hasNext()) {

OMElement omElement = (OMElement) values.next();

return omElement.getText();

}

} else {

return element;

}

return "-1";

 

}

}

9.客户端代码.

package example;

 

public class TestClient {

public static void main(String[] args) throws Exception {

String url = "http://localhost:8080/testProject/services/HelloWorldService";

String namespace = "http://example";//此处的命名空间 example 应与发布的服务中的命名空间保持一致.

String operateName = "hello";

String[] param = new String[] { "xx" };

Axis2CommonClient axClient = new Axis2CommonClient();

Object obj = axClient.excute(url, namespace, operateName, param);

System.out.println(obj);

operateName = "helloNoParam";

obj = axClient.excute(url, namespace, operateName, param);

System.out.println(obj);

}

}

10.Run AS Java Application,打印出

 

Hello axis2 service!xx

测试!

11.可以运行.原理以及一些细节的配置,可以自行揣摩.



posts - 1, comments - 22, trackbacks - 0

非常感谢呼必斯哈拉图,写得非常的详细,图文并茂。
但是,我的环境和他文中的不太一样,所以根据自己的环境重写如下。

一、环境准备

1.1软件下载准备
Tomcat 5.5下载地址:
http://tomcat.apache.org/download-55.cgi#5.5.20

Axis War包:
http://ftp.wayne.edu/apache/ws/axis2/1_1_1/axis2.war

Axis Eclipse plug-in(代码生成工具和打包工具):
http://apache.justdn.org/ws/axis2/tools/1_1_1/axis2-eclipse-codegen-wizard.zip
http://apache.justdn.org/ws/axis2/tools/1_1_1/axis2-eclipse-service-archiver-wizard.zip

Eclipse 3.2:
http://www.eclipse.org/

MyEclipse5.5M1
http://www.myeclipseide.com/

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-Dir


D.安装MyEclipse5.5M1,将eclipse目录指向D:eclipse-SDK-3.2-win32,删除D:eclipse-SDK-3.2-win32eclipseconfiguration下的org.eclipse.update目录。然后启动MyEclipse,选择“File->New->Other”可以看到如下的两个界面
1、Axis2 plugins


2、Web Servieces plugins

E.下面开始搭建Web Services的部署环境。

将下载的tomcat5.5解压缩到一个目录D:Tomcat5.5。

F.将axis2.war包拷贝到tomcat安装目录下的webapps目录。

G.启动Tomcat(D:Tomcat5.5binstartup.bat),打开浏览器输入并访问:http://127.0.0.1:8080/axis2 来查看,结果如下图,表示axis2已经工作正常。

二、快速开始

2.1创建webApps项目

启动MyEclipse,新建立一个WebAppsFile->New->Project->Web Project,Project Name SayHello
,其他保持不改变。

2.2创建WSDL文件

A.选择File->New-Other菜单,进入后找到MyEclipse->Web Services并选择WSDL.如下图:

B.点击下一步按钮,显示如下图:

C.选择“src”目录作为“Enter or select the parent folder”的值,“File name”值给定为SayHello.wsdl。

D.下一步》所有界面内容取默认值,Finish!

E.显示WSDL设计器的界面如下:

F.修改图中标红色的部分:
修改图中的NewOperation为SayHello;
修改input中parameters为SayHelloRequest;
修改output中parameters为SayHelloResponse;
修改完后如下图:

红色框内为变化的内容,WSDL文件修改完毕。

2.3WSDL生成Java代码

A.选择菜单“File->New->Other”,从对话框中选取“Axis2 Wizards”下面的“Axis2 Code Generator”.点击“Next”

B.进入下一个页面,保持“Generate java source code from WSDL file”被选中,点击“Next”进入下一步。
C.点击“Browse”来选取存放在src目录下的SayHello.wsdl文件,“Next”
进入下一步。
D.首先生成客户端代码和测试代码,设置如下:

E.下一步后,选择SayHellosrc目录,如下图:

Finish !

F.重复从A到C的步骤,然后生成服务端代码,设置如下:


后面同E。

G.结束后,刷新项目,如图:

这是由于没有将Axis2jar包放入class path 中以及源代码的package不为org.example.www.sayhello引起的。

H.修改包名为org.example.www.sayhello并从tomcat中的axis2 web应用WEB-INF/lib目录中加载所有jar包到项目的classpath中。

I.在SayHelloTest.java 中引入junit包。

2.4编写业务代码

打开SayHelloSKeleton.java文件其中的方法如下:

 

public  org.tonyzhangcn.ws.sayhello.SayHelloResponse SayHello(org.tonyzhangcn.ws.sayhello.SayHelloRequest param0)

{

//  Todo fill this with the necessary business logic

throw   new  java.lang.UnsupportedOperationException();

}

 

 修改为:

 

public  org.tonyzhangcn.ws.sayhello.SayHelloResponse SayHello(org.tonyzhangcn.ws.sayhello.SayHelloRequest request)
{
      try
    {
             SayHelloResponse response = new SayHelloResponse();
             response.setOut("Hi,"+request.getIn()+".How are you?");
             return response;
    }catch(UnsupportedOperationException e)
       {
           throw e;
   }
}

 

2.5打包

A.选择菜单“File->New->Other”,从对话框中选取“Axis2 Wizards”下面的“Axis2 Services Archive”.点击“Next”进入下一个页面

B.选择编译好的class文件所在目录(本项目应该是WebRoot下面WEB-INF/classes),“Next”进入下一步。

C.选择WSDL文件所在目录,此处为src目录下的SayHello.wsdl文件。“Next”,再“Next”。选择services.xm文件。

D.点击“Next”,将记入最后一个页面,此处有两个选项,一个是输出目录一个是处处文件名称。这里的输出文件名称给的是SayHello。点击“Finish”完成。

2.6部署

A.将打包好的文件SayHello.jar拷贝到Tomcat中已经部署的Axis2应用的WEB-INF/services目录下面。

B.重新启动Tomcat

C.打开浏览器,输入http://127.0.0.1:8080/axis2,并点击其中的“services”链接可以看到SayHello已经被部署。点击SayHello提供的连接可以看到与之对应的WSDL。

2.7调用测试
A.修改SayHelloTest.java文件中的方法
testSayHello的内容为:

 

public void testSayHello() throws java.lang.Exception {
  String url="http://localhost:8080/axis2/services/SayHello";
  org.example.www.sayhello.SayHelloStub stub = new org.example.www.sayhello.SayHelloStub(url);
  org.example.www.sayhello.SayHelloStub.SayHello request = (org.example.www.sayhello.SayHelloStub.SayHello) getTestObject(org.example.www.sayhello.SayHelloStub.SayHello.class);
  request.setIn("Teamlet");
  System.out.println(stub.SayHello(request).getOut());
  assertNotNull(stub.SayHello(request));
 }

 

  从菜单中选择“Run>Run as->JUnit Test 完成测试!


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值