WebSphere 8 Liberty应用迁移Tomcat 8后登录报HTTP 408错误求助
旧Web应用迁移至Tomcat 8后登录报HTTP 408问题
我正在将一个基于WebSphere 8 Liberty Profile、Java 6、Spring 3.1.14的Struts旧Web应用,迁移到JDK 8+Spring 3.2.18的Tomcat 8环境。调整配置、版本和POM文件后,主页和登录页能正常加载。
把Liberty的用户角色配置转到Tomcat的tomcat-users.xml后,用正确账号登录直接返回HTTP 408错误,但用不存在的账号或错误密码时能正常拦截。试过Stack Overflow上的多种方案,都没用。
另外还有个差异:在Liberty里登录页会先于首页显示,Tomcat里却是先显示首页,点击页面链接才弹出登录页。
有没有人遇到过Tomcat配置里登录报HTTP 408的问题?
配置文件详情
server.xml
<?xml version="1.0" encoding="UTF-8"?> <Server port="8006" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <Service name="Catalina"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxParameterCount="1000" /> <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <!-- This Realm uses the UserDatabase configured in the global JNDI resources under the key "UserDatabase". Any edits that are performed against this UserDatabase are immediately available for use by the Realm. --> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> </Engine> </Service> </Server>
context.xml
<?xml version="1.0" encoding="UTF-8"?> <Context> <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> <Resource name="jdbc/TheDB" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="30" maxWaitMillis="10000" username="secret" password="secret" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = toto)(PORT = 2222))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = none.offyourbusiness.com)))"/> </Context>
tomcat-users.xml
<?xml version="1.0" encoding="UTF-8"?> <tomcat-users xmlns="http://tomcat.apache.org/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd" version="1.0"> <role rolename="BasicAccess"/> <role rolename="StaffAccess"/> <role rolename="AdminAccess"/> <role rolename="ProfileAccess"/> <user username="basicUser" password="toto" roles="BasicAccess"/> <user username="staffUser" password="toto" roles="BasicAccess,StaffAccess"/> <user username="profileUser" password="toto" roles="BasicAccess,ProfileAccess"/> <user username="superUser" password="toto" roles="BasicAccess,AdminAccess"/> </tomcat-users>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" 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"> <display-name>ViewerWeb</display-name> <!-- Spring configuration --> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/applicationContext.xml </param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> <!-- FILTER --> <filter> <filter-name>MyFilter</filter-name> <filter-class>com.project.viewer.filter.MyFilter</filter-class> </filter> <filter-mapping> <filter-name>MyFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- STRUTS SERVLET --> <servlet> <servlet-name>action</servlet-name> <servlet-class> org.apache.struts.action.ActionServlet </servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml, /WEB-INF/modules/document/struts-config-document.xml, /WEB-INF/modules/access/struts-config-access.xml, /WEB-INF/modules/profile/struts-config-profile.xml, /WEB-INF/modules/report/struts-config-report.xml, /WEB-INF/modules/status/struts-config-status.xml, /WEB-INF/modules/roadblock/struts-config-roadblock.xml </param-value> </init-param> <init-param> <param-name>chainConfig</param-name> <param-value>/WEB-INF/chain-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>999</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>999</param-value> </init-param> <init-param> <param-name>validate</param-name> <param-value>true</param-value> </init-param> <load-on-startup>2</load-on-startup> <!-- SECURITY ROLES --> <security-role-ref> <role-name>BasicAccess</role-name> <role-link>BasicAccess</role-link> </security-role-ref> <security-role-ref> <role-name>StaffAccess</role-name> <role-link>StaffAccess</role-link> </security-role-ref> <security-role-ref> <role-name>AdminAccess</role-name> <role-link>AdminAccess</role-link> </security-role-ref> <security-role-ref> <role-name>ProfileAccess</role-name> <role-link>ProfileAccess</role-link> </security-role-ref> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- PAGES --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <error-page> <error-code>403</error-code> <location>/notauthorized.jsp</location> </error-page> <error-page> <error-code>401</error-code> <location>/notauthorized.jsp</location> </error-page> <!-- SECURITY CONSTRAINT - DOCUMENT --> <security-constraint> <web-resource-collection> <web-resource-name>Document</web-resource-name> <url-pattern>/document.do</url-pattern> <url-pattern>/download.do</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint> <role-name>BasicAccess</role-name> <role-name>StaffAccess</role-name> </auth-constraint> </security-constraint> <!-- SECURITY CONSTRAINT - ADMINISTRATION --> <security-constraint> <web-resource-collection> <web-resource-name>Report Access Manager And View Authorizations</web-resource-name> <url-pattern>/report.do</url-pattern> <url-pattern>/access.do</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint> <role-name>AdminAccess</role-name> </auth-constraint> </security-constraint> <!-- SECURITY CONSTRAINT - PROFILE MANAGER --> <security-constraint> <web-resource-collection> <web-resource-name>Profile Manager</web-resource-name> <url-pattern>/profile.do</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint> <role-name>ProfileAccess</role-name> </auth-constraint> </security-constraint> <!-- LOGIN FORM --> <login-config> <auth-method>FORM</auth-method> <form-login-config> <form-login-page>/login.jsp</form-login-page> <form-error-page>/login.jsp?msg=error</form-error-page> </form-login-config> </login-config> <!-- ROLES --> <security-role> <role-name>BasicAccess</role-name> </security-role> <security-role> <role-name>StaffAccess</role-name> </security-role> <security-role> <role-name>AdminAccess</role-name> </security-role> <security-role> <role-name>ProfileAccess</role-name> </security-role> <session-config> <session-timeout>60</session-timeout> </session-config> </web-app>
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

