Glassfish 4.0的本地和远程实例中的不同行为的原因

时间:2014-07-15 16:34:20

标签: netbeans jsf-2 glassfish

我有一个Java EE 7项目,我已经能够成功部署到桌面上的嵌入式Glassfish 4实例。但是,当我将同一项目部署到远程Glassfish 4实例时,该应用程序的行为不正常。

问题似乎与app中两个主要bean实例的范围有关,两者都声明如下:

@Named   
@ViewScoped  
public class OfferListBean

..和

@Named  
@ViewScoped  
public class EditBean 

当我部署到远程服务器时,它会抛出以下异常:

Exception while loading the app : CDI deployment failure:WELD-000072 Bean declaring a passivating scope must be passivation capable. Bean: Managed Bean [class beans.EditBean] with qualifiers [@Default @Any @Named] org.jboss.weld.exceptions.DeploymentException: WELD-000072 Bean declaring a passivating scope must be passivation capable. Bean: Managed Bean [class beans.EditBean] with qualifiers [@Default @Any @Named] at org.jboss.weld.bean.ManagedBean.checkType(ManagedBean.java:210)

我在网上发现,这意味着bean需要实现Serializable,因此我实现了serializable,并且应用程序无一例外地部署。但是,当JSF页面尝试访问任一bean时,会抛出以下异常:

javax.el.PropertyNotFoundException: /offerreport/offerlist.xhtml @21,38 value="#{offerListBean.selectedManufacturer}": Target Unreachable, identifier 'offerListBean' resolved to null

我桌面上的操作系统是Windows 7,服务器是Windows 2003.本地JDK是1.8,服务器运行在1.7(我在Netbeans中将应用程序编译为1.7)。

非常感谢任何想法

1 个答案:

答案 0 :(得分:0)

固定!解决方案是有另一个无状态的bean被注入EditBean和OfferListBean,它也需要被序列化。

至于为什么本地服务器和遥控器的要求之间存在差异的原因,我怀疑问题的根源在于两个环境不同。该服务器是运行Windows Server 2003的旧服务器,该公司让我试验。它只能运行Java 7.我的桌面运行Java 8.