tomcat - resteasy 未在 tomcat 响应错误代码 400 错误请求上运行

标签 tomcat struts2 jetty resteasy servlets

我是初学者。我对 resteasy 和 tomcat 有疑问。我的resteasy应用程序在jetty上运行正常,但是在tomcat上部署响应错误代码400,无法运行服务。 这是我的代码: web.xml :

<context-param>
    <param-name>
        org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG
    </param-name>
    <param-value>
        /WEB-INF/tiles.xml
    </param-value>
</context-param>

<listener>
    <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/applicationContext.xml
    </param-value>
</context-param>

<listener>
    <listener-class>
        org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>

<listener>
    <listener-class>org.jboss.resteasy.plugins.spring.SpringContextLoaderListener</listener-class>
</listener>

<context-param>
    <param-name>resteasy.server.cache.maxsize</param-name>
    <param-value>10000000</param-value>
</context-param>

<context-param>
    <param-name>resteasy.server.cache.eviction.wakeup.interval</param-name>
    <param-value>60000</param-value>
</context-param>

<listener>
    <listener-class>
        org.jboss.resteasy.plugins.cache.server.ServletServerCache</listener-class>
</listener>

<servlet>
    <servlet-name>Resteasy</servlet-name>
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServlet30Dispatcher</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Resteasy</servlet-name>
    <url-pattern>/api/*</url-pattern>
</servlet-mapping>

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/web/*</url-pattern>
</filter-mapping>

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>

应用程序上下文.xml

<import resource="classpath:/com/asus/db/HibernateContext.xml"/>

<!-- Rest -->
<bean id="userRest" class="com.asus.restimpl.UserRestImpl"/>

<!-- Service -->
<!-- DAO -->
<import resource="classpath:/com/asus/dao/DAOFactoryContext.xml"/>

java代码:

@Path("/api/user")
public interface UserRest {

@POST
@Path("/save_user")
public void saveUser(@Suspend(10000) final AsynchronousResponse response, 
        @FormParam("fb_user_id") String userId);
}

public class UserRestImpl extends GenericRest implements UserRest{

public void saveUser(final AsynchronousResponse response, final String userId) {
    cachedExecute(new ResponseRunnable(response) {

        @Override
        protected String execute() {
            return  "hello";
        }

    });
}
   }

我的应用程序并行运行 Struts2 和 resteasy。在 jetty 上运行正常,但 tomcat 只有 Struts2,resteasy 响应错误代码 400

请帮帮我!!

最佳答案

我已修复问题 改变

<servlet>
    <servlet-name>Resteasy</servlet-name>
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServlet30Dispatcher</servlet-class>
</servlet>
into
<servlet>
    <servlet-name>Resteasy</servlet-name>
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
</servlet>

谢谢大家

关于tomcat - resteasy 未在 tomcat 响应错误代码 400 错误请求上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17010999/

相关文章:

iphone - 当服务器在谷歌云上时,websocket 在 iPad、iPhone 上失败

jakarta-ee - Google Chrome 不遵守 web.xml session 超时?

java - 从具有struts2的表中删除动态添加的行

java - 无法在 Java 中加载配置文件

jetty - Gradle:如果JMeter测试失败,如何停止Jetty

spring - 如何读取tomcat错误日志

java - 如何在特定的 Web 应用程序部署事件上加载 tomcat jndi 资源/上下文

java - 从 Action 名称 : Struts 2 获取 URL

jsp - Tomcat 提供另一个 URL

java - ReSTLet-1.1 example\book\rest\ch2\Example2_5 没有用于 HTTPS 的客户端连接器