Eclipse中建立JSR181的web服务

环境
windows 7 
eclipse 3.6 jee版
Tomcat6.0.18
JDK7.0.1

过程
1)在eclipse中建立一个新动态web项目,取名为ws-simple,记得将class目录设置为ws-simple/WebContent/WEB-INF/classes. 
2)建议个新的包,取名为bingo.ws.server
3)建立一个类,取名为FSImpl 
import javax.jws.WebMethod;
import   javax.jws.WebParam;
import   javax.jws.WebResult;
import   javax.jws.WebService;

@WebService(serviceName = "FSImpleServer", portName = "FSImple_Port", wsdlLocation = "WEB-INF/dsdl/FSImpleServer.wsdl")
@BindingType (value=SOAPBinding. SOAP12HTTP_BINDING )
public   class  FSImple {

       @WebMethod (operationName =  "hello"  )
       @WebResult (name =  "remsg" , partName =  "remsg" )
       public  String hello(
                   @WebParam (name= "msg" ,partName= "msg" )
                  Dept msg
                  ) {
             return   "张三 "  + msg;
      }
}


public class Dept {

       private  String  name ;
       private  String  code ;

       public  String getName() {
             return   name ;
      }

       public   void  setName(String name) {
             this . name  = name;
      }

       public  String getCode() {
             return   code ;
      }

       public   void  setCode(String code) {
             this . code  = code;
      }

       @Override
       public  String toString() {
             return   this . code + "|" + this . name ;
      }
      
      

}

打开命令行,cd到项目目录,然后执行下面命令:
wsgen  -cp ./WebContent/WEB-INF/classes -s ./src  -r ./WebContent/WEB-INF/wsdl -wsdl:Xsoap1.2 bingo.ws.server.FSImple  -extension
(备注:我目前还没有找到eclipse里面可以替代wsgen的东西,那位童鞋知道的麻烦告诉我一下。默认使用的是soap1.1的,但是wsimport生成的代码却只支持1.2,真是郁闷。
刷新src目录,会发现多了一个目录jaxws,里面就是消息传递中需要bean对象了。

5)修改web.xml配置如下:
<listener>
            <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
      </listener>
      <servlet>
            <servlet-name>simple</servlet-name>
            <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
            <servlet-name>simple</servlet-name>
            <url-pattern>/simple</url-pattern>
      </servlet-mapping>
WSServletContextListener:负责加载配置文件sun-jaxws.xml

6)在WEB-INF下新建一个文件,取名为sun-jaxws.xml,内容如下:
<? xml   version = "1.0"   encoding = "UTF-8" ?>


< endpoints
      xmlns = "http://java.sun.com/xml/ns/jax-ws/ri/runtime"
      version = "2.0" >

      < endpoint
          name = "simple"
          implementation = "bingo.ws.server.FSImple"
          wsdl = "WEB-INF/wsdl/ FSImpleServer.wsdl "    
          binding = "http://www.w3.org/2003/05/soap/bindings/HTTP/"
          url-pattern = "/simple"   />
          <!-- add binding to enable addressing.
        For Indigo interop, set addressing=submission
        binding="http://schemas.xmlsoap.org/wsdl/soap/http?addressing=1.0" -->
          <!-- how to configure multiple ports here port="{http://duke.org}Ping0" -->

</ endpoints >

7)好了,现在可以将项目放入到tomcat里面运行了,然后访问 http://localhost:8081/myws/simple
你就可以看到需要web service了。

是不是比CXF和AXIS2好方便很多,唯一不好就是wsgen的使用方式上。

希望以后版本能有所改变。这样使用web服务就比较简单了。

你可能感兴趣的:(Eclipse中建立JSR181的web服务)