TongWeb的“JNDI资源” 功能用以替换tomcat Resource 配置,该配置常用于JMS、数据源配置.

场景一:JMS配置

tomcat集成ActiveMQ、TongLINK/Q8.1方式

<Resource name="queue/connectionFactory"    
                auth="Container"    
                type="org.apache.activemq.ActiveMQConnectionFactory"  
                description="JMS Connection Factory"  
                factory="org.apache.activemq.jndi.JNDIReferenceFactory"  
                brokerURL="tcp://localhost:61616"  
                brokerName="LocalActiveMQBroker" />  
<Resource name="queue/queue0"    
                auth="Container"    
                type="org.apache.activemq.command.ActiveMQQueue"  
                description="My Queue"  
                factory="org.apache.activemq.jndi.JNDIReferenceFactory"  
                physicalName="Queue" /> 


<!--
        TongJMS client jar must be visible to Tomcat JNDI resource creation.
        Copy lib/TongJMS-jms2.0-8.1.17.2-0608.jar to $CATALINA_BASE/lib or $CATALINA_HOME/lib.
    -->

    <Resource auth="Container"
              name="jms/TongJmsConnectionFactory"
              type="com.tongtech.tmqi.ConnectionFactory"
              description="TongJMS JMS 2.0 connection factory"
              factory="com.tongtech.tmqi.naming.AdministeredObjectFactory"
              version="3.0"
              readOnly="false"
              tmqiAddressList="tlq://10.10.22.113:10024"
              tmqiDefaultUsername="guest"
              tmqiDefaultPassword="guest"
              tmqiReconnectEnabled="true"
              tmqiReconnectAttempts="3"
              tmqiReconnectInterval="3000"
              tmqiAckTimeout="60000" />

    <Resource auth="Container"
              name="jms/FooQueue"
              type="com.tongtech.tmqi.Queue"
              description="TongJMS queue"
              factory="com.tongtech.tmqi.naming.QObjectFactory"
              version="1.1"
              destName="lq" />

TongWeb JNDI资源配置方式如下,这种方式比JCA  genericra方便些。

1. 将activemq-all.jar放在TongWeb的lib下或控制台选择jar路径。

2. 队列及队列工厂的配置如下:

JMS 连接工厂

JMS 队列

 3.可以看到JNDI树上有相应配置

 4.在代码上与tomcat区别如下: 

InitialContext context = new InitialContext();
/*
 * tomcat方式 QueueConnectionFactory conFactory =
 * (QueueConnectionFactory)
 * context.lookup("java:comp/env/queue/connectionFactory");
 */
// TongWeb方式
QueueConnectionFactory conFactory = (QueueConnectionFactory) context.lookup("queue/connectionFactory");

/*
 * tomcat方式 Queue queue = (Queue)
 * context.lookup("java:comp/env/queue/queue0");
 */
// TongWeb方式
Queue queue = (Queue) context.lookup("queue/queue0");
QueueConnection queConn = conFactory.createQueueConnection();

同理:在TongWeb8.0上配TongLINK/Q8.1的"JNDI资源"也是如此。

1. 将TLQ8.1相关jar放在TongWeb的lib目录下。

2. 配置JNDI资源的连接工厂和队列。

<!--  tongweb.xml中相关配置 -->
<Resources>
    <Resource aliases="jms/TongJmsConnectionFactory" classpath="" connectionProperties="" depends-on="" factoryClass="com.tongtech.tmqi.naming.AdministeredObjectFactory" id="TongJmsConnectionFactory" otherProperties="version=3.0,readOnly=false,tmqiAddressList=tlq%3A%2F%2F127.0.0.1%3A10024,tmqiDefaultUsername=guest,tmqiDefaultPassword=guest,tmqiReconnectEnabled=true,tmqiReconnectAttempts=3,tmqiReconnectInterval=3000,tmqiAckTimeout=60000" resourceType="com.tongtech.tmqi.ConnectionFactory" type="java.lang.Object"/>
    <Resource aliases="jms/FooQueue" classpath="" connectionProperties="" depends-on="" factoryClass="com.tongtech.tmqi.naming.QObjectFactory" id="FooQueue" otherProperties="version=1.1,destName=queueA" resourceType="com.tongtech.tmqi.Queue" type="java.lang.Object"/>
</Resources>

 场景二:数据源场景

正常情况下采用JNDI数据源是通过TongWeb的“JDBC配置” ,若想集成第三方开源数据源,且通过JNDI调用方式引用的话也可以配置

以建阿里druid数据源为例

代码使用方式:

Context env = new InitialContext();
DataSource dataSource = (DataSource) env.lookup("jdbc/test");
Connection con = dataSource.getConnection();

注:这种是数据源的一种非正常使用方式,非特殊要求尽量少用。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐