Java 将JAX-RS 1.1升级到JAX-RS 2.0需要web.xml部署方面的帮助

Java 将JAX-RS 1.1升级到JAX-RS 2.0需要web.xml部署方面的帮助,java,rest,jakarta-ee,jquery,jax-rs,Java,Rest,Jakarta Ee,Jquery,Jax Rs,我正在进行一个升级现有web应用程序的项目,该应用程序是在JAX-RS1.12中开发的,运行在Tomcat7中。现在我将它升级到JAX-RS2.0。在tomcat服务器启动期间,我的资源没有被加载 详情如下。 下面添加了JAX-RS2.0的JAR jersey-client-2.0-m07-1 jersey-common-2.0-m07-1 jersey-container-servlet-2.0-m07-1 jersey-container-servlet-core-2.0-m07-1 jer

我正在进行一个升级现有web应用程序的项目,该应用程序是在JAX-RS1.12中开发的,运行在Tomcat7中。现在我将它升级到JAX-RS2.0。在tomcat服务器启动期间,我的资源没有被加载

详情如下。 下面添加了JAX-RS2.0的JAR

jersey-client-2.0-m07-1 jersey-common-2.0-m07-1 jersey-container-servlet-2.0-m07-1 jersey-container-servlet-core-2.0-m07-1 jersey-server-2.0-m07-1 javax.ws.rs-api-2.0-m10 osgi-resource-locator-1.0.1 javax.inject-2.1.28 javax.inject-1 hk2-utils-2.1.28 hk2-locator-2.1.28 hk2-api-2.1.28 番石榴-13.0 cglib-2.1.28 asm-all-repackaged-2.1.28

在Web.xml中


运动衫2
配置服务
org.glassfish.jersey.servlet.ServletContainer
javax.ws.rs.core.Application
com.cisco.config.resource
1.
配置服务
/配置/*

我的资源文件

@Path("/configset")
public class ConfigSetResource {   
    @POST
@Path("/id{configsetid: (/[^/]+?)?}")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public ConfigSetResponse getConfigSet(@PathParam("configsetid") String sConfigSetId)    throws    Exception {
     //Code
    }
    }

正在尝试使用下面的URL访问我的资源API IP地址:8080/ConfigLiteJersey 2/config/configset/id

找不到正在获取HTTP状态404


看起来我没有在web.xml中提供正确的servletclass映射。请在此分享您的想法

如果您想扫描您的软件包以获取资源,请将您的参数名称更改为:

<param-name>jersey.config.server.provider.packages</param-name>
jersey.config.server.provider.packages

如果您使用的是Servlet 3.0版,我建议您遵循泽西岛手册中的示例:

创建一个实现javax.ws.rs.core.Application的类,比如org.foo.rest.ConfigLiteApplication。然后使web.xml如下所示(根据jersey页面稍加修改以匹配您的示例):

我会考虑把它分成多个函数,或者尝试避免这种正则表达式。比如说

@POST
@Path("/id")
public ConfigSetResponse getConfigSet() {
     return this.getConfigSet(null);
}
@POST
@Path("/id/{configsetid}")
public ConfigSetResponse getConfigSet(@PathParam("configsetid") String sConfigSetId) {
     //Code
}

我正在使用Jersey 2.15,下面是工作配置:

<servlet>
    <servlet-name>emper</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.le.config.ResourceConfiguration</param-value>
    </init-param>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.le.exceptions</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>emper</servlet-name>
    <url-pattern>/api/*</url-pattern>
</servlet>  

皇帝
org.glassfish.jersey.servlet.ServletContainer
javax.ws.rs.Application
com.le.config.ResourceConfiguration
jersey.config.server.provider.packages
com.le.exceptions
皇帝
/原料药/*
我知道的一件大事是,我们可以注册提供程序类,比如全局异常处理程序。因此,
com.le.exceptions
包含我的提供者类,它实现了Jersey提供的
ExceptionMapper


另一件事,我们需要创建一个子类
org.glassfish.jersey.server.ResourceConfig
,并将其注册为我们的
jax-rs
应用程序。

在长时间的谷歌搜索之后,我以这种方式配置了我的应用程序,效果非常好

build.gradle应该是这样的

compile 'log4j:log4j:1.2.7'
compile 'org.slf4j:slf4j-log4j12:1.6.6'
compile 'org.glassfish.jersey.containers:jersey-container-servlet:2.6'
@ApplicationPath("/app")
public class ApplicationConfig extends ResourceConfig {

    public ApplicationConfig() {
        packages("com.flexisaf.resources");

    }
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 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_3_0.xsd">
    <!-- Default page to serve -->

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
    <display-name>SAFHRMS</display-name>
    <servlet>
        <servlet-name>com.flexisaf.safhrms.client.config.ApplicationConfig</servlet-name>

        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>com.flexisaf.safhrms.client.config.ApplicationConfig</servlet-name>
        <url-pattern>/app/*</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>safhrms.jsp</welcome-file>
    </welcome-file-list>

</web-app>
ApplicationConfig.java文件应该是这样的

compile 'log4j:log4j:1.2.7'
compile 'org.slf4j:slf4j-log4j12:1.6.6'
compile 'org.glassfish.jersey.containers:jersey-container-servlet:2.6'
@ApplicationPath("/app")
public class ApplicationConfig extends ResourceConfig {

    public ApplicationConfig() {
        packages("com.flexisaf.resources");

    }
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 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_3_0.xsd">
    <!-- Default page to serve -->

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
    <display-name>SAFHRMS</display-name>
    <servlet>
        <servlet-name>com.flexisaf.safhrms.client.config.ApplicationConfig</servlet-name>

        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>com.flexisaf.safhrms.client.config.ApplicationConfig</servlet-name>
        <url-pattern>/app/*</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>safhrms.jsp</welcome-file>
    </welcome-file-list>

</web-app>
您的web.xml文件应该如下所示

compile 'log4j:log4j:1.2.7'
compile 'org.slf4j:slf4j-log4j12:1.6.6'
compile 'org.glassfish.jersey.containers:jersey-container-servlet:2.6'
@ApplicationPath("/app")
public class ApplicationConfig extends ResourceConfig {

    public ApplicationConfig() {
        packages("com.flexisaf.resources");

    }
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 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_3_0.xsd">
    <!-- Default page to serve -->

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
    <display-name>SAFHRMS</display-name>
    <servlet>
        <servlet-name>com.flexisaf.safhrms.client.config.ApplicationConfig</servlet-name>

        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>com.flexisaf.safhrms.client.config.ApplicationConfig</servlet-name>
        <url-pattern>/app/*</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>safhrms.jsp</welcome-file>
    </welcome-file-list>

</web-app>

30
萨夫拉姆斯
com.flexisaf.safhrms.client.config.ApplicationConfig
1.
com.flexisaf.safhrms.client.config.ApplicationConfig
/应用程序/*
safhrms.jsp
这解决了我的问题谢谢