首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合JAX-RS和JAX-WS

组合JAX-RS和JAX-WS
EN

Stack Overflow用户
提问于 2011-02-18 06:25:34
回答 3查看 4.4K关注 0票数 11

是否有框架、库或技术将JAX-RS和JAX-WS (或等效功能)组合成一个组合服务,其方式类似于在WCF中为同一服务使用两个端点(一个SOAP和一个REST)?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-20 05:20:10

Apache CXF可以完成这项工作。有关更多信息,请访问http://cxf.apache.org/docs/frontends.html

票数 5
EN

Stack Overflow用户

发布于 2013-04-16 02:37:11

这可以通过标准的tomcat配置来实现。只需对服务使用单独的URL即可。我决定把JAX-WS服务放在"SOAP/“后面,把其他的放在小写字母后面。如果你想在URL中使用"rest“,那就更简单了,但是对于终端用户来说就不是那么好了。不要忘了添加sun-jaxws.xml。我保留了‘`init params’,因为它们对于标准化的URL很有用。如果您愿意,您可以将它们全部删除。

代码语言:javascript
复制
<?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>
票数 2
EN

Stack Overflow用户

发布于 2013-01-04 17:53:50

添加到Mikhail的答案中,CXF的配置示例。欲了解更多信息,请访问http://cxf.apache.org/docs/jax-rs-and-jax-ws.html#JAX-RSandJAX-WS-JAXRSandJAXWS

代码语言:javascript
复制
  <!-- 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" />

更新: Peter Szanto在https://github.com/ExampleDriven/cxf-example创建了一个maven项目

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5035466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档