首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat的资源名JNDI风格

Tomcat的资源名JNDI风格
EN

Stack Overflow用户
提问于 2019-01-21 15:22:42
回答 1查看 658关注 0票数 2

我正在将一个非常庞大的Websphere 9应用程序转移到Tomcat 9

应用程序中的一切都很好,除了一件事。

该应用程序通过有线bean使用了一个WorkManagerTaskExecutor

代码语言:javascript
复制
@Bean
public WorkManagerTaskExecutor taskExecutor() {
    WorkManagerTaskExecutor  pool = new WorkManagerTaskExecutor();
    pool.setWorkManagerName("someName");
    //pool.setResourceRef(true);
    return pool;
}

在Websphere中,可能有一些资源是通过管理控制台配置的。

Tomcat中,我在server.xml中创建了一个Resource

代码语言:javascript
复制
<Resource name = "someName"
              auth = "Container"
              type = "commonj.work.WorkManager"
              factory = "de.myfoo.commonj.work.FooWorkManagerFactory"
              minThreads = "1"
              maxThreads = "25" />

context.xml中的链接

代码语言:javascript
复制
<ResourceLink name="someName" global="someName" type="commonj.work.WorkManager" />

而错误是:

javax.naming.NameNotFoundException:名称someName在此上下文中不绑定。

现在,如果我启用这一行:

代码语言:javascript
复制
pool.setResourceRef(true);

它工作得很完美,但我不想在代码中做任何修改。

我已经尝试将两个.xml的变量重命名为JNDI风格,因为JndiLocatorSupport文档说:

代码语言:javascript
复制
If the name doesn't begin with "java:comp/env/", this prefix is added if "resourceRef" is set to "true".

name="java:comp/env/someName"也不起作用。这能克服吗?应该叫什么名字?

EN

回答 1

Stack Overflow用户

发布于 2020-09-14 14:42:06

它是为我工作的!

  1. applicationContext.xml
代码语言:javascript
复制
<bean id="scheduler"
        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <!-- Refer your trigger beans -->
                <ref bean="cronDeleteSynchronizationTrigger" />
            </list>
        </property>
        <property name="dataSource" ref="schedulerDataSource" />
        <property name="configLocation" value="classpath:quartz.properties" />
        <property name="taskExecutor" ref="taskExecutor" />
</bean>
<bean id="taskExecutor"
    class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor">
    <property name="workManagerName" value="java:comp/env/wm/someName" />   
    <property name="resourceRef" value="true" />
</bean>
  1. 在Context.xml中
代码语言:javascript
复制
<Context>
    <Resource name = "wm/someName"
              auth = "Container"
              type = "commonj.work.WorkManager"
              factory = "de.myfoo.commonj.work.FooWorkManagerFactory"
              minThreads = "1"
              maxThreads = "5" 
            />
</Context>

3)我还添加了像这样的罐子

代码语言:javascript
复制
   commonj-1.1.0.jar
   aktivecortex-foo-commonj-1.3.0.jar
   slf4j-api-1.7.25.jar
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54292971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档