在 EJB 中读取时,静态变量给出空值或默认值 - jboss EAP 6.1.0
Static Variable gives null or default value when read in an EJB- jboss EAP 6.1.0
我们已将我们的应用程序从 weblogic 10.0 迁移到 jboss EAP 6.1.0。
从我们的 EJB 访问在 servlet 的 init() 方法中加载的属性时,返回值为 null。
以下方法在 Ejbbean 类中:
public void execute() throws EJBException
{
System.out.println("Constants.x in execute ----"+Constants.x);
}
此处打印的值为空。尽管如果我们在 EJB 以外的任何地方在我们的应用程序中使用相同的代码,则会返回正确的值。
我们正在加载 servlet 的 init 方法中的属性。
public void init() throws javax.servlet.ServletException
{
ServletContext sContext = this.getServletContext();
try
{
String propFile = sContext.getInitParameter("abc");
Properties prop = new Properties();
FileInputStream inStream = new FileInputStream(propFile);
prop.load(inStream);
Constants.loadValues(prop);
System.out.println("Constants.x in execute ----"+Constants.x);
}
此处打印了静态变量 x 的正确值。
public final class Constants
{
public static String x = null;
public final static void loadValues(Properties prop) throws Exception
{
// the properties are loaded here...
}
}
当相同的代码在其他地方运行良好时,EJB 内部静态变量的这种意外行为背后的原因是什么?部署在weblogic server上的应用程序没有这个问题。
如何解决这个问题?
我找到了这个问题的解决方案。 jboss-deployment-structure.xml需要为EJB依赖于WAR.
的应用编写
参考资料link:
http://www.mastertheboss.com/jboss-server/jboss-deploy/configuring-jboss-as-7-deployment-order
我们已将我们的应用程序从 weblogic 10.0 迁移到 jboss EAP 6.1.0。
从我们的 EJB 访问在 servlet 的 init() 方法中加载的属性时,返回值为 null。
以下方法在 Ejbbean 类中:
public void execute() throws EJBException
{
System.out.println("Constants.x in execute ----"+Constants.x);
}
此处打印的值为空。尽管如果我们在 EJB 以外的任何地方在我们的应用程序中使用相同的代码,则会返回正确的值。
我们正在加载 servlet 的 init 方法中的属性。
public void init() throws javax.servlet.ServletException
{
ServletContext sContext = this.getServletContext();
try
{
String propFile = sContext.getInitParameter("abc");
Properties prop = new Properties();
FileInputStream inStream = new FileInputStream(propFile);
prop.load(inStream);
Constants.loadValues(prop);
System.out.println("Constants.x in execute ----"+Constants.x);
}
此处打印了静态变量 x 的正确值。
public final class Constants
{
public static String x = null;
public final static void loadValues(Properties prop) throws Exception
{
// the properties are loaded here...
}
}
当相同的代码在其他地方运行良好时,EJB 内部静态变量的这种意外行为背后的原因是什么?部署在weblogic server上的应用程序没有这个问题。
如何解决这个问题?
我找到了这个问题的解决方案。 jboss-deployment-structure.xml需要为EJB依赖于WAR.
的应用编写参考资料link: http://www.mastertheboss.com/jboss-server/jboss-deploy/configuring-jboss-as-7-deployment-order