现在的位置: 首页 > 综合 > 正文

axis生成webservice方法(转载)

2013年07月22日 ⁄ 综合 ⁄ 共 3829字 ⁄ 字号 评论关闭

一、前期准备

1、软件

准备resinAxis14,其中webapps下要有axis文件夹

 

axis内容:用于生成WSDL文件和通过WSDL生成JAVA也可以放在其他地方

 

 

WSDL命令:

 

将axis文件夹,复制到G:\Server\resinAxis14\deploy中,启动resin:

点击list可以查看所有接口

 

为了使AXIS指向本地工程,修改resin.conf:

      <resin:if test="${java.isJava5()}">

        <!--

           - Administration application /resin-admin

           -

           - password is the md5 hash of the password.

           - localhost is true to limit access to the localhost

          -->

        <resin:set var="resin_admin_password"  default=""/>

        <resin:set var="resin_admin_localhost" default="true"/>

 

        <web-app id="/resin-admin" document-directory="${resin.home}/php/admin"/>

        <web-app id="/axis14" document-directory="G:/workspace/TestAxis14/WebRoot/"/>

       </resin:if>

将axis文件夹中内容,复制到web-inf对应目录中(类似于:index.jsp,fingerprint.jsp可以不复制。这些用来显示如上图的AXIS页面)

 

二、写接口类(用于生产WSDL)

写一个接口类,没有package(只需要写出方法,不用写方法的具体实现,不能再其中写main方法)

 

 

将CLASS文件放到axis14文件夹中,此文件夹放置了java2wsdl和wsdl2java命令

 

三、生成WSDL文件和客户端与服务端的JAVA文件

修改java2wsdl:

set Axis_Lib=G:\Server\resinAxis14\webapps\axis\WEB-INF\lib

set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%

%Java_Cmd% org.apache.axis.wsdl.Java2WSDL -o TestAxis14.wsdl  -l "http://localhost:9090/axis/services/TestAxis14"
TestAxis14

 

在cmd中,执行java2wsdl,结果如下:(需要保证AXIS服务可用)

 

axis14文件夹中生成文件:TestAxis14.wsdl

修改wsdl2java:

set Axis_Lib=G:\Server\resinAxis14\webapps\axis\WEB-INF\lib

set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%

set Output_Path=G:\axis14\axis14src\

set Package=com.zhongying.testaxis14.client

%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o %Output_Path% -p %Package% TestAxis14.wsdl

执行wsdl2java生成客户端程序

修改输出路径:set Package=com.zhongying.testaxis14.service

修改最后一句:%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -s -o %Output_Path% -p %Package% TestAxis14.wsdl

-s代表生成服务端程序

执行wsdl2java生成服务端程序

将得到的JAVA文件放到工程中

 

四、修改配置文件

修改G:\workspace\TestAxis14\WebRoot\WEB-INF\server-config.wsdd

增加:

 <service name="TestAxis14" provider="java:RPC">

  <parameter name="allowedMethods" value="*"/>

  <parameter name="className" value="com.zhongying.testaxis14.service.TestAxis14SoapBindingImpl"/>

 </service>

访问:http://localhost:9090/axis14/services/TestAxis14?wsdl 可以显示WSDL内容:

 

 

五、测试服务

1、写具体实现业务的类:

package com.zhongying.testaxis14.service;

public class TestAxisModel {

public String getAxisNameAndId(String name,String id){

 

System.out.println("getAxisNameAndId name is "+name+" id is "+id);

return "getAxisNameAndId IS END :"+name+"-"+id;

}

public String getAxisId(String id){

System.out.println("getAxisId  id is "+id);

return "getAxisId IS END :"+id+" is getAxisId ok";

}

public static void main(String[] args){

System.out.println("getAxisNameAndId  id is ");

}

}

 

修改服务端的实现类:

package com.zhongying.testaxis14.service;

 

public class TestAxis14SoapBindingImpl implements com.zhongying.testaxis14.service.TestAxis14_PortType{

    public java.lang.String getAxisNameAndId(java.lang.String name, java.lang.String id) throws java.rmi.RemoteException {

            TestAxisModel m = new TestAxisModel();

            return m.getAxisNameAndId(name, id);

    }

 

    public java.lang.String getAxisId(java.lang.String id) throws java.rmi.RemoteException {

            TestAxisModel m = new TestAxisModel();

            return m.getAxisId( id);

    }

}

 

新增客户端的测试类:

package com.zhongying.testaxis14.client;

public class TestTestAxis {

public static void main(String args[]){

TestAxis14SoapBindingStub stub;

try {

javax.xml.rpc.Service service=new TestAxis14ServiceLocator();

 

java.net.URL url=new java.net.URL("http://localhost:9090/axis14/services/TestAxis14?wsdl");

stub = new TestAxis14SoapBindingStub(url,service);

 

                    String returnMsg1=stub.getAxisId("gx");

System.out.println("returnMsg1 "+returnMsg1);

                    returnMsg1=stub.getAxisNameAndId("gx"," id ");

System.out.println("returnMsg1 "+returnMsg1);

} catch (Exception e) {

e.printStackTrace();

}

}

}

在ECLIPSE中执行此类,可以测试WEBSERVICE

执行结果:

returnMsg1 getAxisId IS END :gx is getAxisId ok

returnMsg1 getAxisNameAndId IS END :gx- id

 

服务端的resin日志:

getAxisId  id is gx

getAxisNameAndId name is gx id is  id

 

转自:http://user.qzone.qq.com/38873502#!app=2&via=QZ.HashRefresh&pos=1320584525

 

抱歉!评论已关闭.