【问题标题】:How to deploy a RESTEasy Application in TomCat 9.0?如何在 TomCat 9.0 中部署 RESTEasy 应用程序?
【发布时间】:2017-05-19 09:40:39
【问题描述】:

我确实搜索了很多关于此的主题,有些人告诉我使用 resteasy-servlet-initialler,有些人使用 RestEasyBootstrap,但它无法工作,只响应 404 页面。它让我发疯。你能帮我吗出去?

  <servlet>
    <servlet-name>Resteasy</servlet-name>
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
    <load-on-startup>1</load-on-startup>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.restfully.shop.services.ShoppingApplication</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>Resteasy</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

这是简单的应用程序:

@ApplicationPath("/services")
public class ShoppingApplication extends Application {

    private Set<Object> singletons =new HashSet<Object>();
    private Set<Class<?>> empty=new HashSet<Class<?>>();

    public ShoppingApplication()
    {
        singletons.add(new CustomerResource());
    }

    @Override
    public Set<Class<?>> getClasses() {
        return empty;
    }

    @Override
    public Set<Object> getSingletons() {
        return singletons;
    }
}

这里是gradle:

dependencies {
    compile group:'org.jboss.resteasy',name:'resteasy-jaxrs',version:'3.1.2.Final'
    compile group:'org.jboss.resteasy',name:'resteasy-jackson-provider',version:'3.1.2.Final'
    compile group:'org.jboss.resteasy',name:'resteasy-guice',version:'3.1.2.Final'
    compile group: 'org.jboss.resteasy',name:'resteasy-servlet-initializer',version:'3.1.2.Final'
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

【问题讨论】:

    标签: java tomcat resteasy web.xml


    【解决方案1】:

    删除 @ApplicationPath 注释,因为您的 web.xml 配置是多余的。

    并将 web.xml 更改为:

    <context-param>
        <param-name>resteasy.servlet.mapping.prefix</param-name>
        <param-value>/services</param-value>
    </context-param>
    
    <servlet>
        <servlet-name>Resteasy</servlet-name>
        <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
        <load-on-startup>1</load-on-startup>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>com.restfully.shop.services.ShoppingApplication</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>Resteasy</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>
    

    注意更新的 url 模式。

    【讨论】:

    • 它不起作用。我删除了重复的注释,并更新了 context-param 以及 url-pattern 。我认为 Tomcat 日志记录中肯定有一些提示或日志信息,但是它只是显示部署成功,当我尝试访问它时,它显示 404
    • 但有一条信息“org.apache.jasper.servlet.TldScanner.scanJars 至少有一个 JAR 已扫描 TLD,但未包含 TLD”
    • @GyxLove521 您要访问的 URL 是什么?请使用更新的 web.xml 文件和资源类更新问题。
    猜你喜欢
    • 2020-05-23
    • 2021-07-14
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    相关资源
    最近更新 更多