采用axis2 pojo开发webservice要点

服务器开发

此处以新建一个web工程为起始点:

1,将axis2.war下:axis2-web文件夹,WEB-INF下conf,lib,modules,web.xml复制到web工程同级目录下;

classes下的org.apache.axis2.webapp/XXXservlet源文件(此处反编译过来的)复制到src下。

最少必需jar包如下

XmlSchema-1.4.3.jar
activation-1.1.jar
axiom-api-1.2.11.jar
axiom-dom-1.2.11.jar
axiom-impl-1.2.11.jar
axis2-adb-1.5.5.jar
axis2-jaxws-1.5.5.jar
axis2-kernel-1.5.5.jar
axis2-transport-http-1.5.5.jar
axis2-transport-local-1.5.5.jar
commons-codec-1.3.jar
commons-fileupload-1.2.jar
commons-httpclient-3.1.jar
commons-io-1.4.jar
commons-logging-1.1.1.jar
geronimo-jaxws_2.1_spec-1.0.jar
geronimo-stax-api_1.0_spec-1.0.1.jar
geronimo-ws-metadata_2.0_spec-1.1.2.jar
httpcore-4.0.jar
mail-1.4.jar
neethi-2.0.5.jar
woden-api-1.0M8.jar
wsdl4j-1.6.2.jar
wstx-asl-3.2.9.jar

2,在src下新建HelloWorldService服务端文件 严重注意:不能设置package

public class HelloWorld {
    public String sayHello() {
        return "hello,Axis2";
    }

3,将HelloWorldService字节码文件复制到WEB-INF/pojo下(conf/axis2.xml,默认此文件夹下的字节码部署为webservice已经开启)

4,访问http://localhost:8080/axis2test/services/HelloWorld?wsdl 成功

如果直接访问http://localhost:8080/axis2test/services/HelloWorld仍然会报The endpoint reference (EPR) for the Operation not found is /axis2test/services/HelloWorld and the WSA Action = null的提示,此不影响后面使用。


客户端访问

首先配置环境变量AXIS2_HOME到yourlocalpath\axis2-1.5.5

然后添加类路径set path=%path%;%AXIS2_HOME%\BIN;

做了准备工作后,接下来:

1,生成wsdl文件

d:\axis2test\build\classes>java2wsdl -cn HelloWorld

2,根据wsdl文件生成stub

d:\axis2test\build\classes>wsdl2java -uri http://localhost:8080/axis2test/services/HelloWorld?wsdl -p client -s -o stub 

注:

-s若不保留,生成stub中会采用callbackhandler方式。但是此处并没有生成这个回调函数类因此报错。

-uri此处直接用网络路径wsdl,采用本地wsdl时工作不正常可能需要修改,缺少.XXXHttpSoap12Endpoint/后缀。

-p指定包结构,-o指定代码保存路径。

3,测试访问webservice

public static void main(String[] args) {
        try {
            HelloWorldStub stub=new HelloWorldStub("http://localhost:8080/axis2test/services/HelloWorld");
            SayHelloResponse res= stub.sayHello();
            System.out.println(res.get_return());
        } catch (AxisFault e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (RemoteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        

    }

eclipse直接在web工程右键上选择run on server发布后的webapp位置

web工程workspace-path\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps


参考网页

WebService大讲堂之Axis2(1):用POJO实现0配置的WebService



你可能感兴趣的:(java)