使用Jersey冲突的Tomcat Context

时间:2014-04-30 21:07:07

标签: java tomcat web-applications localhost jersey-1.0

我正在使用jersey来创建一个Web服务器

我的项目目录有以下映射

ProjectName 
     |.. src/main/java
       |.. folder1
         |.. restEndpoint1.java , restendpoint2.java etc 

restEndpoint1.java的外观示例

@Path("/static1/static2")
public class DoStuff {

@POST
@Path("/static3")
@Consumes(MediaType.APPLICATION_XML)
@Produces("application/xml")
public Response validation(String inputXML){

所以我的url部署到tomcat的例子是

 localhost:port/projectName/foldername/{restendpoint1.path}

我的web.xml是

<servlet>
        <servlet-name>jersey-servlet</servlet-name>
        <servlet-class>
            com.sun.jersey.spi.container.servlet.ServletContainer
        </servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>folder1</param-value>
        </init-param>
        <init-param>
            <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

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

现在我必须使用tomcat web UI中的Context路径将此战争部署为不同的上下文(我正在使用Tomcat 7)

即我希望网址是

http://localhost:port/{context1}/{restendpoint1.path}

http://localhost:port/{context2}/{restendpoint1.path}

我知道每个上下文都会将所有其他端点暴露给它们,但我不关心它,我只需要这样映射它。我面临的问题是

1)在web.xml中我需要提供一个文件夹名称作为param,以便成为root用户,但是根据这个上下文要求我不能这样做。另外,我无法独立映射到每个java类(可以吗??)

2)在tomcat UI中如何使用不同的上下文部署我的应用程序,我只能上传war或提供上下文并在服务器上使用war的URL

1 个答案:

答案 0 :(得分:0)

通过更改web.xml中的映射来解决

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

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