当前位置: 首页 > 知识库问答 >
问题:

Jersey设置2个servlet

乌鸿宝
2023-03-14

我的web.xml如下所示:

<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_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

    <!-- Servlets -->
    <servlet>
        <servlet-name>javax.ws.rs.core.Application</servlet-name>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>com.path.to.server.resources.exceptionmappers;com.path.to.server.resources.api;com.path.to.server.resources.internal</param-value>
        </init-param>
    </servlet>

    <servlet>
        <servlet-name>com.path.to.server.ApiApplication</servlet-name>
    </servlet>

    <servlet-mapping>
        <servlet-name>javax.ws.rs.core.Application</servlet-name>
        <url-pattern>/resources/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>com.path.to.server.ApiApplication</servlet-name>
        <url-pattern>/api</url-pattern>
    </servlet-mapping>

</web-app>

我的ApiApplication设置如下:

public class ApiApplication extends ResourceConfig
{
    public ApiApplication()
    {
        System.out.println("SETTING UP API");
        packages("com.path.to.server.resources.exceptionmappers;com.path.to.server.resources.api");
    }
}

现在我有了所有的设置,我正试图达到我的服务。我使用的DirectRestService如下所示:

@Path("resources/authentication")
public interface AuthenticationService extends BaseService
{
    @POST
    @Path("/login/{loginType}")
    @Produces(MediaType.APPLICATION_JSON)
    Session login(@HeaderParam("Authorization") String authorization, @PathParam("loginType") UserTypes loginType);

    @POST
    @Path("/findActiveSession")
    @Produces(MediaType.APPLICATION_JSON)
    Session findActiveSession();
}
@Path("authentication")
public class AuthenticationResource extends BaseResource implements AuthenticationService
{
    public Session login(String authorization, UserTypes loginType)
    {
        // Code to do stuff
    }

    public Session findActiveSession()
    {
        // Code to do stuff
    }
}

共有1个答案

澹台星光
2023-03-14

我终于想出了一个有效的解决办法。我不知道它是否完全正确,但它给了我想要的结果:

我的web.xml

<web-app id="WebApp_ID" version="3.0" [...]>
    <!-- Servlet for direct client/server calls -->
    <servlet>
        <servlet-name>InternalApplication</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>
                path.to.server.resources.exceptionmappers,path.to.server.resources.api,path.to.server.resources.internal
            </param-value>
        </init-param>
    </servlet>

    <!-- Servlet for API calls -->
    <servlet>
        <servlet-name>ApiApplication</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>
                path.to.server.resources.exceptionmappers,path.to.server.resources.api
            </param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>InternalApplication</servlet-name>
        <url-pattern>/resources/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>ApiApplication</servlet-name>
        <url-pattern>/api/*</url-pattern>
    </servlet-mapping>
</web-app>

我最终并不需要应用程序子类。

 类似资料:
  • 设置用于储存键值对。设置对象是orm(默认值)上的实例,之后会为每个db连接和每个定义过的Model建立快照。所以orm.settings上的更改只会作用于更改之后建立的连接,而db.settings会作用于更改之后定义的模型。 var orm = require("orm"); orm.settings.set("some.deep.value", 123); orm.connect("....

  • 问题内容: 在jersey 1中,我们在类中具有一个函数setConnectTimeout。 在球衣2中,缺少此功能的地方使用该类。 如何在jersey 2.x中设置连接超时并读取超时? 问题答案: 下面的代码在Jersey 2.3.1中对我有用(灵感在这里找到:https :

  • 在泽西1中,我们在类中有一个函数setConnectTimeout。 在jersey 2中,类用于缺少此函数的地方。 如何设置连接超时和读取超时在泽西2. x?

  • 我试图在servlet/tomcat上下文中实现Jersey中的HK2绑定。 在一个扩展org.glassfish.jersey.servlet.ServletContainer的servlet中是这样做的: 为什么要问这个问题?(编辑) 是为泽西岛的EntityManager和JPA准备的。 使用Netbeans时,如果我生成了一个AbstractFacade,它将 多谢了。

  • 本文向大家介绍jersey Java Jersey配置,包括了jersey Java Jersey配置的使用技巧和注意事项,需要的朋友参考一下 示例 此示例说明了如何配置Jersey,以便您可以开始将其用作RESTful API的JAX-RS实现框架。 假设您已经安装了Apache Maven,请按照以下步骤设置Jersey: 创建Maven Web项目结构,在终端(Windows)中执行以下命令

  • 问题内容: 编辑:现在更具体,我注意到我想在下面使用两个依赖项的冲突: 基本上,我试图忽略一个属性(@JsonIgnore),但是我的Jackson注释都没有起作用。甚至@JsonProperty。我试图在getters和setters方法中添加@JsonIgnore,但是行为相同。 我还尝试遵循官方文档,并尝试使用其他库 导入org.codehaus.jackson.annotate.JsonI