0

我遇到了一个问题,我无法弄清楚发生了什么......

我已经使用 spring 集成构建了一个 rest-api。当我在本地 tomcat 7 中部署应用程序时,一切正常。

当我将它部署在 mi bitnami 堆栈(相同的 tomcat 版本)并尝试相同的请求(更改主机)时,身份验证步骤正常但找不到映射...

Spring Security 的基本身份验证做得很好

2013-07-02 12:12:04,228 DEBUG intercept.FilterSecurityInterceptor - 先前经过身份验证:org.springframework.security.authentication.UsernamePasswordAuthenticationToken@95f956f:主体:org.springframework.security.core.userdetails.User@36ebcb:用户名:用户;密码保护]; 启用:真;AccountNonExpired:真;凭据非过期:真;AccountNonLocked:真;授予权限:角色;凭证:[受保护];已认证:真实;详细信息:org.springframework.security.web.authentication.WebAuthenticationDetails@0:RemoteIpAddress:85.136.69.37;会话ID:空;授予权限:ROLE 2013-07-02 12:12:04,228 DEBUG vote.AffirmativeBased - 投票者:org.springframework.security.web.access.expression.WebExpressionVoter@346946d5,返回:1 2013-07-02 12:12:04,228调试拦截。授权成功

找不到 Spring Integration 映射

2013-07-02 12:12:04,228 调试拦截。FilterSecurityInterceptor - RunAsManager 没有更改身份验证对象 2013-07-02 12:12:04,228 调试 web.FilterChainProxy - /ptgapi/v1/clients/1/events/400 已结束附加过滤器链;继续原始链 2013-07-02 12:12:04,228 DEBUG support.OpenEntityManagerInViewFilter - 在 OpenEntityManagerInViewFilter 中打开 JPA EntityManager 2013-07-02 12:12:04,229 DEBUG servlet.DispatcherServlet - DispatcherServlet 名称为“Destiny Customer Information Search Restful Web Service ' 处理 [//PTG/ptgapi/v1/clients/1/events/400] 的 GET 请求

2013-07-02 12:12:04,229 WARN servlet.PageNotFound -在 DispatcherServlet 中找不到带有 URI [//PTG/ptgapi/v1/clients/1/events/400] 的 HTTP 请求的映射,名称为“Destiny Customer Information Search Restful”网络服务'

知道发生了什么吗?

更新

我发现 Spring Integration 在本地使用双斜杠 (//),在 bitnami 中使用简单斜杠 (/) 是同一场战争。

可能是 Spring Integration 拆分 URL 的方式(本地环境是 windows,bitnami 是 Ubuntu)?

当地的

2013-07-02 15:31:28,443 调试 servlet.DispatcherServlet - 名为“Destiny 客户信息搜索 Restful Web 服务”的 DispatcherServlet 处理 [ /PTG/ptgapi/v1/clients/1/events/400 ]的 GET 请求

2013-07-02 15:31:28,449 调试 inbound.UriPathHandlerMapping - 请求的匹配模式 [/ptgapi/v1/clients/1/events/400] 是 [/ptgapi/{apiVersion}/clients/{clientId}/events/ {事件ID}]

比特纳米

2013-07-02 13:37:45,469 DEBUG servlet.DispatcherServlet - 名为“Destiny Customer Information Search Restful Web Service”的 DispatcherServlet 处理 [ //PTG/ptgapi/v1/clients/1/events/400 ]的 GET 请求

2013-07-02 13:37:45,470 WARN servlet.PageNotFound - 在 DispatcherServlet 中找不到带有 URI [//PTG/ptgapi/v1/clients/1/events/400] 的 HTTP 请求的映射,名称为“Destiny 客户信息搜索 RestfulWeb”服务'

4

1 回答 1

0

我发现将 servlet-mapping 更改为这个可以避免这种奇怪的行为:

<servlet-mapping>
    <servlet-name>Destiny Customer Information Search Restful Web Service</servlet-name>
    <url-pattern>/rootCommonPath/*</url-pattern>
</servlet-mapping>
于 2013-07-03T11:42:57.680 回答