2011-02-17 12 views
11

JAX-RS ve JAX-WS'yi (veya eşdeğer işlevselliği) iki uç noktayı (bir SOAP ve bir tane kullanarak) benzer şekilde birleştirilmiş bir hizmette birleştiren bir çerçeve, kitaplık veya teknik var mı? REST) ​​WCF'de aynı hizmet için?Birleşik JAX-RS ve JAX-WS

cevap

1

Mikhail'in yanıtına ek olarak, CXF yapılandırmasının örneği. Daha fazla bilgi http://cxf.apache.org/docs/jax-rs-and-jax-ws.html#JAX-RSandJAX-WS-JAXRSandJAXWS

<!-- JAX-RS --> 
    <jaxrs:server id="customerService" address="/"> 
    <jaxrs:serviceBeans> 
     <ref bean="customerService" /> 
    </jaxrs:serviceBeans> 
    </jaxrs:server> 

    <!-- JAX-WS --> 
    <jaxws:endpoint implementor="#customerService" 
    address="/CustomerWorld" wsdlLocation="..."/> 

    <bean id="customerService" class="demo.jaxrs.server.CustomerService" /> 

Güncelleme yer almaktadır: Peter Szanto https://github.com/ExampleDriven/cxf-example

2

Bu standart bir erkek kedi yapılandırma ile mümkün bir maven projesi oluşturdu. Sadece hizmetler için ayrı URL'leri kullanın. JAX-WS hizmetini "SOAP /" ve diğerleri ise küçük harflerin arkasına koymaya karar verdim. URL'de "dinlenme" yi kullanmak istiyorsanız, daha da kolay, ancak son kullanıcılar için iyi görünmüyor. Bir de sun-jaxws.xml eklemeyi unutmayın. Init-params'ı normalleştirilmiş URL'ler için yararlı oldukları için bıraktım. İsterseniz hepsini bırakabilirsiniz.

<?xml version="1.0" encoding="UTF-8"?> 
<web-app 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    id="webapp" 
    version="2.5"> 
    <display-name>displayname</display-name> 

    <filter> 
     <filter-name>rest</filter-name> 
     <filter-class>com.sun.jersey.spi.container.servlet.ServletContainer</filter-class> 
     <init-param> 
      <param-name>com.sun.jersey.config.property.packages</param-name> 
      <param-value>thepackage</param-value> 
     </init-param> 
     <init-param> 
      <!-- enables processing by JSPs if not JAX-RS handler is registered --> 
      <param-name>com.sun.jersey.config.feature.FilterForwardOn404</param-name> 
      <param-value>true</param-value> 
     </init-param> 
     <init-param> 
      <param-name>com.sun.jersey.config.feature.CanonicalizeURIPath</param-name> 
      <param-value>true</param-value> 
     </init-param> 
     <init-param> 
      <param-name>com.sun.jersey.config.feature.NormalizeURI</param-name> 
      <param-value>true</param-value> 
     </init-param> 
     <init-param> 
      <param-name>com.sun.jersey.config.feature.Redirect</param-name> 
      <param-value>true</param-value> 
     </init-param> 
    </filter> 

    <filter-mapping> 
     <filter-name>rest</filter-name> 
     <url-pattern>/firstresource/</url-pattern> 
     <url-pattern>/secondresource/</url-pattern> 

    </filter-mapping> 

    <listener> 
     <listener-class> 
      com.sun.xml.ws.transport.http.servlet.WSServletContextListener 
     </listener-class> 
    </listener> 

    <servlet> 
     <servlet-name>soap</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>soap</servlet-name> 
     <url-pattern>/SOAP</url-pattern> 
    </servlet-mapping> 

    <session-config> 
     <session-timeout>120</session-timeout> 
    </session-config> 

</web-app>