解决@SessionScoped在JBoss AS 7及IE环境下无法保存状态的恶心问题

环境:
weld-1.1.2(as7自带)
seam-3.0.0.Final
jboss-as-7.0.0.Final

在AS7及IE环境下weld/seam3的@SessionScoped无法保存状态,每次刷新sessionid都会改变,chrome/FF/OP下就一切正常,也不知道as7用什么高科技了,解决办法如下:
打开/jboss-as-7.0.0.Final/standalone/configuration/standalone.xml
在文件头找到
<extensions>
    <extension module="org.jboss.as.clustering.infinispan"/>
    <extension module="org.jboss.as.connector"/>
    <extension module="org.jboss.as.deployment-scanner"/>
    <extension module="org.jboss.as.ee"/>
    <extension module="org.jboss.as.ejb3"/>
    <extension module="org.jboss.as.jaxrs"/>
    <extension module="org.jboss.as.jmx"/>
    <extension module="org.jboss.as.jpa"/>
    <extension module="org.jboss.as.logging"/>
    <extension module="org.jboss.as.naming"/>
    <extension module="org.jboss.as.osgi"/>
    <extension module="org.jboss.as.remoting"/>
    <extension module="org.jboss.as.sar"/>
    <extension module="org.jboss.as.security"/>
    <extension module="org.jboss.as.threads"/>
    <extension module="org.jboss.as.transactions"/>
    <extension module="org.jboss.as.web"/>
    <extension module="org.jboss.as.weld"/>
</extensions>

在后面新增以下配置,即可解决这个问题…
<system-properties>
    <property name="org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR" value="false"/>
    <property name="org.apache.catalina.STRICT_SERVLET_COMPLIANCE" value="true"/>
</system-properties>


测试代码
@SessionScoped
public class SessionScopedBean implements Serializable {
	private static final long serialVersionUID = 1L;
}


@Path("/")
public class Test implements Serializable {
	private static final long serialVersionUID = 1L;
	@Inject SessionScopedBean bean;

	@GET
	@Path("/test")
	public String test() {
		return bean.toString();
	}
}


==========  后记  ===========
JBoss AS 7.0.1.Final已解决这个问题,无需进行上面的配置。

你可能感兴趣的:(session)