【问题标题】:Jersey 1.9 RESTful service resource base redefinitionJersey 1.9 RESTful 服务资源库重新定义
【发布时间】:2017-05-11 14:44:01
【问题描述】:

我们在 WebLogic Server 11g (10.3.6.0) 集群上部署了一个 REST 服务作为 Web 存档。 以下屏幕截图显示了 URL:

访问 WADL (http://172.29.0.21:16200/cwe-rest/jersey/application.wadl) 应将资源库显示为 http://172.29.0.21:16200/cwe-rest/jersey/ 但显示为 http://wcpinternal.uk:80/cwe-rest/jersey/

在可以指定 @ApplicationPath("override/the/base/uri") 的 Web 存档中没有扩展 javax.ws.rs.core.Application 的 Java 类。

完成 WADL

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application xmlns="http://wadl.dev.java.net/2009/02">
    <doc xmlns:jersey="http://jersey.java.net/" jersey:generatedBy="Jersey: 1.9 09/02/2011 11:17 AM"/>
    <grammars/>
    <resources base="http://wcpinternal.uk:80/cwe-rest/jersey/">
        <resource path="checkin">
            <resource path="/test">
                <method id="test" name="GET">
                    <response>
                        <representation mediaType="*/*"/>
                    </response>
                </method>
            </resource>
            <resource path="/doCheckinFilter">
                <method id="doCheckinFilter" name="POST">
                    <request>
                        <representation mediaType="application/json"/>
                    </request>
                    <response>
                        <representation mediaType="application/json"/>
                    </response>
                </method>
            </resource>
        </resource>
    </resources>
</application>

完成 web.xml

<?xml version = '1.0' encoding = 'windows-1252'?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5" xmlns="http://java.sun.com/xml/ns/javaee">
  <filter>
    <filter-name>JpsFilter</filter-name>
    <filter-class>oracle.security.jps.ee.http.JpsFilter</filter-class>
    <init-param>
      <param-name>enable.anonymous</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>JpsFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
  </filter-mapping>
  <servlet>
    <servlet-name>jersey</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>jersey</servlet-name>
    <url-pattern>/jersey/*</url-pattern>
  </servlet-mapping>
</web-app>

完成 weblogic.xml

<?xml version = '1.0' encoding = 'windows-1252'?>
<weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd" xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app">
   <context-root>cwe-rest</context-root>
   <library-ref>
        <library-name>jax-rs</library-name>
        <specification-version>1.1</specification-version>
        <implementation-version>1.9</implementation-version>
        <exact-match>false</exact-match>
    </library-ref>
</weblogic-web-app>

这是如何实现的?任何见解都会有所帮助。

【问题讨论】:

    标签: java web-services rest jersey weblogic11g


    【解决方案1】:

    web.xml 中的 url 模式已配置。

     <servlet-mapping>
        <servlet-name>jersey</servlet-name>
        <url-pattern>/jersey/*</url-pattern>
      </servlet-mapping>

    wadl 资源元素值是从第一个请求的基本 url 中提取的。 例如。我有一个基于球衣的 Web 应用程序部署到 localhost:7001。如果您尝试通过以下方式访问 wadl 然后基本 url 是 localhost:7001

    1.重新部署您的应用程序,尝试使用您的机器名称:端口访问,然后基本 url 是机器名称:端口。 希望对你有帮助。

    【讨论】:

    • 我邀请您再次阅读并理解问题:)
    猜你喜欢
    • 1970-01-01
    • 2011-02-17
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    相关资源
    最近更新 更多