iBatis单身人士被召唤两次

时间:2012-11-15 17:01:58

标签: java-ee singleton ibatis

我正在开发一个新的jdk 1.4.2,JSF + iBatis Web应用程序。

对于数据库的事情,我在SqlMapConfig.xml中添加了一个新行,就像这样

<sqlMapConfig>
        ...
    <sqlMap resource="com/example/properties/SqlMapLockOfferte.xml" />
</sqlMapConfig>

我用我的查询在该位置创建了一个新的SqlMapLockOfferte.xml文件。

我将它部署在我的tomcat 4.1上,似乎一切正常。

我已将其打包并部署在我们的测试环境WebLogic 8.1上,并在Bea启动时看到第一个奇怪的错误:

ERROR [IBatisSqlMapClientSingletonFactory] java.io.IOException: Could not find resource com/example/properties/SqlMapConfig.xml

但配置文件仍然在这里,我没有移动它。 接下来,在应用程序日志中,我看到另一件奇怪的事情:

DEBUG com.example.ibatisimpl.IBatisSqlMapClientSingletonFactory - configuration successfully ended
DEBUG com.example.ibatisimpl.IBatisSqlMapClientSingletonFactory - configuration successfully ended

但是,顾名思义,这个日志是在一个公共静态方法中,所以我在琢磨为什么我会看到这两次。

最后,最有趣的事情。 Web应用程序正在运行运行,并且iBatis似乎工作正常,除了使用我在上面的XML中定义的新查询的部分。 在这种情况下,当我尝试使用我试图实例化单身的NullPointerException对象时,我会收到SqlMapClient

有什么想法吗?

谢谢, Piwakkio。

1 个答案:

答案 0 :(得分:0)

我弄清楚是什么原因引发了这个问题。

在我的Web应用程序中,我使用HttpSessionListener并在他的构造函数中推出了我的iBatis对象的实例化。

在Tomcat 4.1中,一切正常,在WebLogic 8.1中,会话监听器似乎是在Web应用程序启动时创建的,这导致了麻烦。 显然,只有在Web应用程序请求时,Tomcat才会实例化会话侦听器。