在Websphere

时间:2017-04-13 20:39:11

标签: java timer websphere commonj

在Web.xml中我有:

<resource-ref>
    <res-ref-name>java:/comp/env/tm/TimerManager</res-ref-name>
    <res-type>commonj.timers.TimerManager</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Unshareable</res-sharing-scope>
</resource-ref>

在java代码中我有:

    TimerManager tm = (TimerManager) ic.lookup("tm/TimerManager");
tm.schedule(new CleanupListener(), 0, 10*1000); // CleanupListener class is my TimerListener

因此,当我运行代码时,Timer会在代码崩溃后成功启动,但会出现以下异常:

javax.naming.ConfigurationException:NamingManager.getURLContext无法找到此方案的工厂:java

我不知道为什么。 当我用这个更改查找时:TimerManager tm = (TimerManager) ic.lookup("java:/comp/env/tm/TimerManager"); 这甚至是最糟糕的,Timer永远不会启动,我确实有以下异常: db.common.util.ServiceLocatorException:javax.naming.ConfigurationException:NamingManager.getURLContext无法找到此方案的工厂:java

请帮忙,非常重要。感谢

3 个答案:

答案 0 :(得分:0)

尝试使用

java:comp/env/tm/TimerManager

取代

java:/comp/env/tm/TimerManager

如果这没有帮助。请发布完整的部署描述符和绑定文件(web.xml和ibm-web-bnd.xml或ibm-web-bnd.xmi),以确保此文件中的配置正确。

感谢发布文件。我认为问题是web.xml 3.0版与ibm-web-bnd.xmi不兼容。尝试使用web.xml 3.0版和ibm-web-bnd.xml,或者使用早期版本的web.xml和ibm-web-bnd.xmi。

答案 1 :(得分:0)

这是web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<webappbnd:WebAppBinding xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:webappbnd="webappbnd.xmi" xmi:id="WebAppBinding_1263831088044">
  <webapp href="WEB-INF/web.xml#WebApp_ID"/>
  <resRefBindings xmi:id="ResourceRefBinding_1288099140976" jndiName="customs/commercial/tal/jms/ZZZZ_ZZ_ZZZZ_BUS_UPD">
    <bindingResourceRef href="WEB-INF/web.xml#ResourceRef_1288099140976"/>
  </resRefBindings>
</webappbnd:WebAppBinding>

这是ibm-web-bnd.xmi:

rpart

答案 2 :(得分:0)

您恢复了有效的语法。

在web.xml中:

ConnectionKeepAliveStrategy myStrategy = new ConnectionKeepAliveStrategy() {

public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
     //your strategy here..
}

};

CloseableHttpClient client = HttpClients.custom()
.setKeepAliveStrategy(myStrategy)
.build();

在源代码中:

import nltk
from nltk.corpus import sentiwordnet as swn
# Do this first, that'll do something eval() 
# to "materialize" the LazyCorpusLoader
next(swn.all_senti_synsets()) 

# Your other code here.