Java 将JAX-RS 1.1升级到JAX-RS 2.0需要web.xml部署方面的帮助
我正在进行一个升级现有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中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
运动衫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
这解决了我的问题谢谢