1。 资源准备 http://axis.apache.org/axis2/java/core/ 下载 axis2-1.5.4-bin.zip 和 axis2-1.5.4-war.zip。 到 http://axis.apache.org/axis2/java/core/tools/index.html 下载 Service Archive Wizard - Eclipse Plug-in 和 Code Generator Wizard - Eclipse Plug-in (eclipse插件,方便axis开发)
2 将 Service Archive Wizard 和 Code Generator Wizard解压到 F:\Genuitec\MyEclipse-8.6\dropins目录下,重启
3 将 axis2-1.5.4-war.zip放到 apache-tomcat-6.0.36\webapps下面,启动tomcat,输入 http://localhost:8080/axis2/ ,看到如下图,说明axis2安装成功。
4:本机建立可调式的本机web程序
(1)新建web工程,取名 soa,将上述运行成功的axis2项目路径webapps\axis2\WEB-INF 下面的 modules,conf,lib,services四个目录,拷贝到soa 的WEB-INF 下面,删除sercices下面的全部内容,并新建文件夹myservice(名字任意),META-INF文件夹,在META-INF下面建立services.xml 文件 如图示
5:修改 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">
<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.jsp</welcome-file>
</welcome-file-list>
</web-app>
6 建立本机webservice 应用,新建java文件
public String sayHello(String name) {
System.err.println(" com.tydic.webservice.HelloWorld.sayHello()");
return "Hello bbkf: " + name + ".";
}
System.err.println(" com.tydic.webservice.HelloWorld.saySorry()");
return "Sorry," + name + ".";
}
System.err.println(" com.tydic.webservice.HelloWorld.getWorld()");
return "Hello,World";
}
<service name="HelloWorld" scope="application">
<description>
Weather 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.tydic.webservice.HelloWorld</parameter>
<messageReceiver class = "org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
<operation name="saySorry">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</operation>
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
</operation>
重启tomcat ,在地址栏输入 http://localhost:8080/soa/services/HelloWorld?wsdl,能看到
点击 next,然后选择生成文件的路径
其中 TestHelloWorld是测试类
{
public static void main(String[] args) throws Exception
{
// 使用RPC方式调用WebService
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
// 指定调用WebService的URL
EndpointReference targetEPR = new EndpointReference(
"http://localhost:8080/axis2/services/SimpleService");
options.setTo(targetEPR);
// 指定getGreeting方法的参数值
Object[] opAddEntryArgs = new Object[] {"超人"};
// 指定getGreeting方法返回值的数据类型的Class对象
Class[] classes = new Class[] {String.class};
// 指定要调用的getGreeting方法及WSDL文件的命名空间
QName opAddEntry = new QName("http://ws.apache.org/axis2", "getGreeting");
// 调用getGreeting方法并输出该方法的返回值
System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[0]);
// 下面是调用getPrice方法的代码,这些代码与调用getGreeting方法的代码类似
classes = new Class[] {int.class};
opAddEntry = new QName("http://ws.apache.org/axis2", "getPrice");
System.out.println(serviceClient.invokeBlocking(opAddEntry, new Object[]{}, classes)[0]);
}
}
在Windows控制台输出如下的命令行来生成调用WebService的代码:
%AXIS2_HOME%\bin\wsdl2java -uri http://localhost:8080/soa/services/HelloWorld?wsdl -p client -s -o stub
其中-url参数指定了wsdl文件的路径,可以是本地路径,也可以是网络路径。-p参数指定了生成的Java类的包名,-o参数指定了生成的一系列文件保存的根目录。在执行完上面的命令后,读者就会发现在当前目录下多了个stub目录,在."stub"src"client目录可以找到一个SimpleServiceStub.java文件,该文件复杂调用WebService,读者可以在程序中直接使用这个类,代码如下: