搭建本机调试的axis2环境

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文件

com.tydic.webservice.HelloWorld,内容如下
public class HelloWorld {
 public String sayHello(String name) {
  System.err.println(" com.tydic.webservice.HelloWorld.sayHello()");
  return "Hello bbkf: " + name + ".";
 }
 public String saySorry(String name) {
  System.err.println(" com.tydic.webservice.HelloWorld.saySorry()");
  return "Sorry," + name + ".";
 }
 public String getWorld() {
  System.err.println(" com.tydic.webservice.HelloWorld.getWorld()");
  return "Hello,World";
 }
}
7 在 /WEB-INF/services/myservice/META-INF/services.xml 内写入如下
<?xml version="1.0" encoding="UTF-8"?>
<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>
    <operation name="sayHello"> 
        <messageReceiver class = "org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> 
    </operation>
   
    <operation name="saySorry"> 
        <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> 
    </operation> 
    <operation name="getWorld"> 
        <messageReceiver class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/> 
    </operation> 
</service>
重启tomcat ,在地址栏输入 http://localhost:8080/soa/services/HelloWorld?wsdl,能看到
如下的内容,证明发布成功
8 验证 8.1,通过工具生成调用代码。用eclipse的 axis2生成向导 file--new --other-- axis2 wizards--axis2 code generator ,点击 next ,过程如图示



 点击 next,然后选择生成文件的路径
那么工具会帮我们生成调用客户端代码,将代码挪到eclipse中,样式如下,


 其中 TestHelloWorld是测试类
 
8.2 Java实现调用WebService的客户端程序,参考下面的代码
public class RPCClient
{
    
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]);
    } 
}
8.3 用 axis2 自带的wsdl2java简化客户端的编写
wsdl2java.bat命令可以在<Axis2安装目录>"bin目录中找到。在使用wsdl2java.bat命令之前需要设置AXIS2_HOME环境变量,该变量值是<Axis2安装目录>

    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,读者可以在程序中直接使用这个类,代码如下:

 

猜你喜欢

转载自pengfeicao521.iteye.com/blog/1848654