servlet容器中使用jersey 翻译官网

来源:互联网 发布:点击按钮执行php代码 编辑:程序博客网 时间:2024/06/11 07:28

Servlet 2.x Container

1、首先添加依赖

<pre name="code" class="html"><!--jersey 2.x用以下依赖,但2.6以后的版本都是用是JDK7,所以要注意版本问题-->     <dependency >    <groupId >org.glassfish.jersey.containers </groupId>    <!-- if your container implements Servlet API older than 3.0, use "jersey-container-servlet-core"  -->    <artifactId >jersey-container-servlet </artifactId>    <version >2.5 </version></dependency><!-- Required only when you are using JAX-RS Client --><dependency>    <groupId >org.glassfish.jersey.core </groupId>    <artifactId >jersey-client </artifactId>    <version >2.5 </version></dependency>


2、 web.xml 基础配置两种实现方式
利用servlet
<web-app>    <servlet>        <servlet-name>MyApplication</servlet-name>        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>        <init-param>            ...        </init-param>    </servlet>    ...    <servlet-mapping>        <servlet-name>MyApplication</servlet-name>        <url-pattern>/myApp/*</url-pattern>    </servlet-mapping>    ...</web-app>


利用过滤器:
Alternatively, you can register Jersey container as a filter:

Example 4.10. Hooking up Jersey as a Servlet Filter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<web-app>
    <filter>
        <filter-name>MyApplication</filter-name>
        <filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class>
        <init-param>
            ...
        </init-param>
    </filter>
    ...
    <filter-mapping>
        <filter-name>MyApplication</filter-name>
        <url-pattern>/myApp/*</url-pattern>
    </filter-mapping>
    ...
</web-app>


The content of the <init-param> element will vary depending on the way you decide to configure Jersey resources.

以下是两种<init-param>的配置方式,可以根据需要选择一种。


第一种

4、提供者和资源包的扫描

Example 4.12. Configuring Jersey container Servlet or Filter to use package scanning

1
2
3
4
5
6
7
8
9
10
<init-param>
    <param-name>jersey.config.server.provider.packages</param-name>
    <param-value>
        org.foo.myresources,org.bar.otherresources
    </param-value>
</init-param>
<init-param>
    <param-name>jersey.config.server.provider.scanning.recursive</param-name>
    <param-value>false</param-value>
</init-param>


红色部分是设置是否递归扫描子包,默认是true.设置为false为不递归扫描。

Jersey will automatically discover the resources and providers in the selected packages.
You can also decide whether Jersey should recursively scan also sub-packages by setting the jersey.config.server.provider.scanning.recursive
 property.
The default value is true, i.e. the recursive scanning of sub-packages is enabled.

总结:通过1、2、4的步骤就可以在应用中使用jersey(环境要求:JDK 1.6/TOMCAT)。。因为jersey 2.6版本的以上都是用JDK7。目前最新版本 2.10.1
而jersey 1.x版本实现类与2.x不同。前面有例子介绍。


第二种

3、扩展配置(不需要可以不配置)4.7.1.1. Custom Application subclass

If you extend the Application class to provide the list of relevant root resource classes (getResources()) and singletons (getSingletons()), 

i.e. your JAX-RS application model, you then need to register it in your web application web.xml deployment descriptor 

using a Servlet or Servlet filter initialization parameter with a name ofjavax.ws.rs.Application [sic] as follows:

Example 4.11.  Configuring Jersey container Servlet or Filter to use custom Application subclass

1
2
3
4
<init-param>
    <param-name>javax.ws.rs.Application</param-name>
    <param-value>org.foo.MyApplication</param-value>
</init-param>


Jersey will consider all the classes returned by getResources() and getSingletons() methods of your Application implementation.

Note


The name of the configuration property as defined by JAX-RS specification is indeed javax.ws.rs.Application and not javax.ws.rs.core.Application as one might expect.


importorg.glassfish.jersey.server.ResourceConfig;
importorg.glassfish.jersey.server.spring.scope.RequestContextFilter;

publicclassMyapplicationextendsResourceConfig{
      publicMyapplication(){
register(RequestContextFilter.class);
register(Hello.class);

      }
}
在Myapplication中暴漏资源



Servlet 2.x Container

1、首先添加依赖

<!--jersey 2.x用以下依赖,但2.6以后的版本都是用是JDK7,所以要注意版本问题-->
     <dependency >
    <groupId >org.glassfish.jersey.containers </groupId>
    <!-- if your container implements Servlet API older than 3.0, use "jersey-container-servlet-core"  -->
    <artifactId >jersey-container-servlet </artifactId>
    <version >2.5 </version>
</dependency>
<!-- Required only when you are using JAX-RS Client -->
<dependency>
    <groupId >org.glassfish.jersey.core </groupId>
    <artifactId >jersey-client </artifactId>
    <version >2.5 </version>
</dependency>

2、 web.xml 基础配置两种实现方式
利用servlet
<web-app>
    <servlet>
        <servlet-name>MyApplication</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            ...
        </init-param>
    </servlet>
    ...
    <servlet-mapping>
        <servlet-name>MyApplication</servlet-name>
        <url-pattern>/myApp/*</url-pattern>
    </servlet-mapping>
    ...
</web-app>

利用过滤器:
Alternatively, you can register Jersey container as a filter:

Example 4.10. Hooking up Jersey as a Servlet Filter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<web-app>
    <filter>
        <filter-name>MyApplication</filter-name>
        <filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class>
        <init-param>
            ...
        </init-param>
    </filter>
    ...
    <filter-mapping>
        <filter-name>MyApplication</filter-name>
        <url-pattern>/myApp/*</url-pattern>
    </filter-mapping>
    ...
</web-app>


The content of the <init-param> element will vary depending on the way you decide to configure Jersey resources.

以下是两种<init-param>的配置方式,可以根据需要选择一种。


第一种

4、提供者和资源包的扫描

Example 4.12. Configuring Jersey container Servlet or Filter to use package scanning

1
2
3
4
5
6
7
8
9
10
<init-param>
    <param-name>jersey.config.server.provider.packages</param-name>
    <param-value>
        org.foo.myresources,org.bar.otherresources
    </param-value>
</init-param>
<init-param>
    <param-name>jersey.config.server.provider.scanning.recursive</param-name>
    <param-value>false</param-value>
</init-param>


红色部分是设置是否递归扫描子包,默认是true.设置为false为不递归扫描。

Jersey will automatically discover the resources and providers in the selected packages.
You can also decide whether Jersey should recursively scan also sub-packages by setting the jersey.config.server.provider.scanning.recursive property.
The default value is true, i.e. the recursive scanning of sub-packages is enabled.

总结:通过1、2、4的步骤就可以在应用中使用jersey(环境要求:JDK 1.6/TOMCAT)。。因为jersey 2.6版本的以上都是用JDK7。目前最新版本 2.10.1
而jersey 1.x版本实现类与2.x不同。前面有例子介绍。


第二种

3、扩展配置(不需要可以不配置)4.7.1.1. Custom Application subclass

If you extend the Application class to provide the list of relevant root resource classes (getResources()) and singletons (getSingletons()), i.e. 

your JAX-RS application model, you then need to register it in your web application web.xml deployment descriptor using a Servlet or Servlet filter 

initialization parameter with a name ofjavax.ws.rs.Application [sic] as follows:

Example 4.11.  Configuring Jersey container Servlet or Filter to use custom Application subclass

1
2
3
4
<init-param>
    <param-name>javax.ws.rs.Application</param-name>
    <param-value>org.foo.MyApplication</param-value>
</init-param>


Jersey will consider all the classes returned by getResources() and getSingletons() methods of your Application implementation.

Note

The name of the configuration property as defined by JAX-RS specification is indeed javax.ws.rs.Application 

and not javax.ws.rs.core.Application as one might expect.



importorg.glassfish.jersey.server.ResourceConfig;
importorg.glassfish.jersey.server.spring.scope.RequestContextFilter;

publicclassMyapplicationextendsResourceConfig{
      publicMyapplication(){
register(RequestContextFilter.class);
register(Hello.class);

      }
}
在Myapplication中暴漏资源







0 0