web中怎么配两个监听
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web中怎么配两个监听相关的知识,希望对你有一定的参考价值。
参考技术A 1、每个应用里的监听器只会对自己的应用生效2、同一个应用里面多个监听器,按在web.xml的注册顺序,依次执行
spring 两个数据源 怎么配事务
使用JTA事务,jboss,weblogic,websphere 等等ejb容器都自带了jta事务的支持,如果你使用tomcat,jetty或者其他web容器,则需要安装第三方的jta插件,假定这里使用jboss容器,则需要在jboss中配置JNDI数据源,比如有两个mysql的数据源需要被JTA管理,则需要在jboss的server/default/deploy目录下新建两个数据源文件app1-ds.xml和app2-ds.xml,这里只拿一个文件做例子,内容如下所示:<datasources>
<xa-datasource>
<jndi-name>MySqlDS1</jndi-name>
<xa-datasource-class>
com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
</xa-datasource-class>
<xa-datasource-property name="URL">
jdbc:mysql://localhost:3306/test
</xa-datasource-property>
<user-name>root</user-name>
<password>root</password>
<use-java-context>false</use-java-context>
<track-connection-by-tx>true</track-connection-by-tx>
<exception-sorter-class-name>
org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
</exception-sorter-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</xa-datasource>
</datasources>
完成JNDI数据源配置后,需要在spring中获取JNDI数据源,配置如下:
<bean id="dataSource1" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="MySqlDS1" />
<property name="lookupOnStartup" value="true" />
</bean>
<bean id="dataSource2" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="MySqlDS2" />
<property name="lookupOnStartup" value="true" />
</bean>
然后定义JTA事务如下:
<bean id="transactionManager-xa"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManagerName" value="java:/TransactionManager" />
</bean>
通过声明式事务模板(代理),指定目标类的特定方法采用JTA事务:
<bean
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property >
<ref bean="transactionManager-xa" />
</property>
<property >
<ref local="accountsInfoDAO" /> <!-- 目标类 -->
</property>
<property >
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
追问
<transactionManager type ="JTA">
<property name="UserTransaction" value="java:/ctx/con/UserTransaction"/>
<dataSource type="JNDI" >
<property name ="DataSource" value="java:comp/env/jdbc/myDataSource"/>
</ dataSource >在配置sql-map-config.xml 中如果有两个数据源那么着 DataSource 是不是应该配置两个,如果是 两个名字一样,如果不是那么应该怎么来配置这个。UserTransaction的value指的什么?
回答
是应该配置两个,但是为什么要配置两个数据源名字一样呢?既然是两个不同的数据库,数据源名字怎么可能一样。
java:/ctx/con/UserTransaction 是指spring访问EJB容器的资源,即容器拥有的JTA事务的API,是特定的接口,可以理解为JTA事务的驱动,不同的容器所拥有的API是不一样的,如下所示:
JBoss: "java:/ctx/con/UserTransaction"
WebLogic: "javax.transaction.UserTransaction"
WebSphere: "java:comp/UserTransaction"
追问
在我启动的时候出现了
Error initializing JtaTransactionConfig while looking up UserTransaction (java:/ctx/con/UserTransaction). Cause: javax.naming.NameNotFoundException: ctx not bound
请问下,这个空间命名,需要我自己添加 还是jboss中就有了这样的空间命名。如果没有 应在怎样添加这个文件
回答
将jboss\docs\examples\jca下的mysql-ds.xml拷贝到jboss\server\default\deploy下,并做相应修改,主要内容如下:
<datasources>
<local-tx-datasource>
<jndi-name>UserTransaction</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/abcdef</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>root</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-
sorter-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources> 参考技术A 第一步、测试能否配置多个DataSource
第二步、测试能否配置多个SessionFactory
第三步、测试能否配置多个TransactionManager
第四步、测试能否使用多个TransactionManager,也就是看能否配置多个<tx:annotation-driven/>
第五步、测试能否配置JTATransactionManager
第六步、更换Tomcat为GlassFish,更换JDBC的DataSource为JNDI查找的DataSource,然后配置JTATransactionManager
以上是关于web中怎么配两个监听的主要内容,如果未能解决你的问题,请参考以下文章
android编程中一个界面怎么编写两个listview,同时设置监听
C++ SOCKET编程,如何监听多个端口,比如监听两个端口,关键代码该怎么写,求教求教,求代码!
在linux系统下配置双网卡,一个内网一个外网,能够是两个都通,怎么配
requestcontextlistener 和contextloaderlistener 可以在web.xml中同时配置么