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

通过eclipse和axis1.4.1(axis2)Java生成webservice

2013年11月23日 ⁄ 综合 ⁄ 共 3289字 ⁄ 字号 评论关闭

如何在工程中运行axis2的命令和参数,请参看《通过eclipseJava生成webservice

工程配置如后所提:web.xmlib

接口类:

package com.inspur.webservice;

public interface WidgetPrice {

    public void setWidgetPrice(String widgetName, String price);

    public String getWidgetPrice(String widgetName);

}

org.apache.ws.java2wsdl.Java2WSDL

参数:

  -o WidgetPrice.wsdl

  -cn com.inspur.webservice.WidgetPrice

或者 

  -cn com.inspur.webservice.WidgetPrice

  -of  tt.wsdl

在应用的根目录下WidgetPrice.wsdl文件夹中有一WidgetPrice.wsdl。也可以在根目录下生成tt.wsdl

放到你想要的位置

org.apache.ws.java2wsdl下有3Java2WSDL相关的类,你可以尝试使用。

提示:

 [JAM] Warning: You are running under a pre-1.5 JDK.  JSR175-style source annotations will not be available

通过wsdl2Java生成服务端代码:

org.apache.axis2.wsdl.WSDL2Java

参数1

-uri D:/workspace/AxisTest/WidgetPrice.wsdl

-o

参数2

-uri D:/workspace/AxisTest/WidgetPrice.wsdl -o test -ss -sd -g -p com.inspur.webservice.server

生成服务端和services.xml

参数3

-uri D:/workspace/AxisTest/WidgetPrice.wsdl 只生成客户端调用辅助类

好了差不多:

1.将程序和wsdlservices.xml外加class文件,打包成.aar包。通过axis2的管理台上传即可。

记得最好打包不要再生成wsdlservices.xml,那样虽然服务可以用,但http://localhost:8080/axis2/services/WidgetPrice?wsdl是看不到wsdl内容的。

2.如果要部署在工程上的话最好如下:

Web.xml

<display-name>Apache-Axis2</display-name>

    <servlet>

        <servlet-name>AxisServlet</servlet-name>

        <display-name>Apache-Axis Servlet</display-name>

        <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>

        <!--<init-param>-->

        <!--<param-name>axis2.xml.path</param-name>-->

        <!--<param-value>/WEB-INF/conf/axis2.xml</param-value>-->

        <!--<param-name>axis2.xml.url</param-name>-->

        <!--<param-value>http://localhot/myrepo/axis2.xml</param-value>-->

        <!--<param-name>axis2.repository.path</param-name>-->

        <!--<param-value>/WEB-INF</param-value>-->

        <!--<param-name>axis2.repository.url</param-name>-->

        <!--<param-value>http://localhot/myrepo</param-value>-->

        <!--</init-param>-->

        <load-on-startup>1</load-on-startup>

    </servlet>   

 

  <servlet-mapping>

    <servlet-name>AxisServlet</servlet-name>

    <url-pattern>/services/*</url-pattern>

  </servlet-mapping>

axis2的相关jar包放到lib中,在你自己的工程下建这样的目录:

Web-inf

----services

-------- WidgetPrice(服务名的文件夹)

        -----meta-inf

              ----- services.xml

              ------ WidgetPrice.wsdl(可选)

在将项目重部署,访问http://localhost:8080/AxisTest/services/WidgetPrice?wsdl可以看到项目上部署成功的webService

本篇和《通过eclipseJava生成webservice》都只是说了webservic的生成和部署,客户端的测试请自行解决,最好的方式还是通过服务的wsdl来生成客户端在测试。

 

参考:(这个方式应该可以用,我没有测试过)

1. 生成wsdl

org.apache.ws.java2wsdl.java2wsdl -cn classa -o .
参数说明:
-cn   
原形类
-o    
输出路径
运行完成后就可以看到目录下多了一个wsdl文件.不要动它继续生成server端和client

2.生成server

org.apache.axis2.wsdl.wsdl2java -uri d:/test/6/classa.wsdl -ss -sd -p com.hjw.test.server -d xmlbeans -o server

参数说明:  -uri wsdl文件
  -ss -sd
搞不太清楚,好像是用来生成server端部署描述的。
  -p
生成包。就是说生成到什么包名下。
  -d xmlbeans
搞不太清楚,每次都是这样用的。
  -o server 
输出目录。叫什么都没关系,只要你喜欢。

3. 第三步生成client测试代码

org.apache.axis2.wsdl.wsdl2java -uri d:/test/6/classa.wsdl -p com.hjw.test.server -d xmlbeans -o client
这个指令跟server端的基本上一样,就是少了个-ss-sd 好像就是说不生成部署描述。
到此为止我们的web services框架已经完整的生成了。再下来就是去实现业务了。
我们到server目录下找到类似于classaskeleton.java的文件。我们的实现就只要改这个类了。
打开这个类我们发现这个类里有个方法这个方法名为我们那个原型类里的方法名。但是这个方法没有实现默认只是抛出一个没有完成的异常。接下来当然是去掉这个异常然后加入自己的方法了。

4. 使用 WSDL2JAVA 產生 stub classes
wsdl2java

-uri http://localhost:8083/axis2/services/HelloWorldService?wsdl

-o D:/eclipse_wtp/workspace/HelloWorldClient -p test.joeyta
-uri WSDL
uri 位置.
-o
輸出 stub classes 的位置. 預設會增加 src 目錄.
-p
設定輸出 stub classes 使用的 package.

抱歉!评论已关闭.