部署webservice服务
在网上找了下,大概有三种方法
1 有在tomcat下部署axis2 包,再将class文件打包成arr包部署
2 在myeclipse中下载axis2插件直接转类文件为wsdl文件的(没有配置成功)
3 在web中引用axis2 jar包,并做相关配置.
方式2 没有调试成功,
方式1 不知道什么情况需要这种应用,发布和更新都不太方便.
在下面就介绍下方式3
参考帖子http://jingyan.baidu.com/article/a3761b2bbe092c1576f9aa29.html
本程序在myeclipse6.5 ,tomcat6,jdk1.6下调试成功
1 在axis2的官网下载axis2.war包 http://axis.apache.org/axis2/java/core/
2 新建一个web应用工程名Axis2Test。
3 解压axis2.war文件,将conf、lib、modules复制到工程中的WEB-INF目录中,axis2-web建议也放到工程WebRoot目录下,因为如果调用webservice失败,没有该文件,系统会报错
加入文件后目录结构如下
4 建立HelloServcieNew.java文件,内容如下:
package cn.lr.service;
public class HelloServiceNew {
public String sayHelloNew(){
return "hello,lr";
}
public String sayHelloToPersonNew(String name){
if(name==null){
name = "nobody";
}
return "hello,"+name;
}
public void updateData(String data){
System.out.println(data+"更新说明");
}
}
5 建立service文件,并按照目录结构建立services.xml文件
目录结构见上图
<?xml version="1.0" encoding="UTF-8"?>
<service name="HelloService">
<description>
Web Service例子
</description>
<parameter name="ServiceClass">
cn.lr.service.HelloServiceNew
</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
</messageReceivers>
</service>
对应关系如图
6 修改web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<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>/services/*</url-pattern>
</servlet-mapping>
</web-app>
增加红色线部分
7 配置后部署tomcat启动服务 访问http://localhost:8080/Axis2Test/services/HelloService?wsdl 提示如下
8 访问测试
新建工程AxisClient,创建AxisClient类
public class AxisClient {
/**
* @param args
* @throws AxisFault
*/
public static void main(String[] args) throws AxisFault {
// TODO Auto-generated method stub
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
// 指定调用WebService的URL
EndpointReference targetEPR = new EndpointReference(
"http://localhost:8080/Axis2Test/services/HelloService");
options.setTo(targetEPR);
// 指定sayHelloToPerson方法的参数值
Object[] opAddEntryArgs = new Object[] {"say hello world"};
// 指定sayHelloToPerson方法返回值的数据类型的Class对象
Class[] classes = new Class[] {String.class};
// 指定要调用的sayHelloToPerson方法及WSDL文件的命名空间
QName opAddEntry = new QName("http://service.lr.cn", "sayHelloToPersonNew");
// 调用sayHelloToPerson方法并输出该方法的返回值
System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[0]);
}
}
对应关系见下图
9 运行AxisClient文件,结果如下: