由于项目需要,要使用缓存作为验证系统,就产生了和数据库事务同步的需要,查来查去就觉得jbosscache可以,但是这个东西的中文资料太少,英文水平有差,看的头大,jta也是第一次运用,跌跌撞撞的现在有点眉目,先纪录下保存,还得继续配置。
一、jboss基本配置:
虚拟主机配置:
1、\server\default\deploy\jboss-web.deployer\server.xml设置host:
<Host name="projectA"
autoDeploy="false" deployOnStartup="false" deployXML="false"
configClass="org.jboss.web.tomcat.security.config.JBossContextConfig">
</Host>
2、设置\server\default\conf\jboss-service.xml文件的:
<attribute name="URLs">
deploy/,file:/E:/workspace/projectA
</attribute>
其中file:/E:/workspace/projectA为我的工程目录,里面有web.war文件夹作为jboss部署时候的选择文件夹(为什么非得要加这个后缀?而且如果这个文件夹或子文件夹有*.rar文件会报部署错误)
3、设置jboss-web.xml
新增jboss-web.xml文件到projectA/web.war/WEB-INF下,内容如下
<?xml version="1.0"?>
<!DOCTYPE jboss-web>
<jboss-web>
<context-root>/</context-root>
<virtual-host>projectA</virtual-host>
</jboss-web>
4、设置mssql-xa-ds.xml:
新增mssql-xa-ds.xml文件到/E:/workspace/projectA下(和web.war文件同一目录下,为什么也还不清楚,需要了解),内容如下(用的是jtds驱动):
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<xa-datasource>
<jndi-name>MSSQLXADS</jndi-name>
<track-connection-by-tx />
<use-java-context>false</use-java-context>
<isSameRM-override-value>false</isSameRM-override-value>
<xa-datasource-class>
net.sourceforge.jtds.jdbcx.JtdsDataSource
</xa-datasource-class>
<xa-datasource-property name="ServerName">
localhost
</xa-datasource-property>
<xa-datasource-property name="DatabaseName">
dbname
</xa-datasource-property>
<xa-datasource-property name="Tds">8.0</xa-datasource-property>
<user-name>sa</user-name>
<password>sa</password>
<!--
You are recommended to use prepareSql=2 with true distributed transactions.
If a temp stored procedure is created and then the container rolls back the
transaction, the driver's procedure cache will be out of line with the server.
-->
<xa-datasource-property name="PrepareSql">
2
</xa-datasource-property>
<!--
Set this property to true to cause the driver to emulate distributed transactions.
False option only works for SQL Server 2000 with MSDTC and JtdsXA.DLL installed.
-->
<xa-datasource-property name="XaEmulation">
false
</xa-datasource-property>
<min-pool-size>10</min-pool-size>
<max-pool-size>60</max-pool-size>
<idle-timeout-minutes>15</idle-timeout-minutes>
<blocking-timeout-millis>5000</blocking-timeout-millis>
<new-connection-sql>select 1</new-connection-sql>
<check-valid-connection-sql>
select 1
</check-valid-connection-sql>
<set-tx-query-timeout />
<metadata>
<type-mapping>MS SQLSERVER2000</type-mapping>
</metadata>
</xa-datasource>
</datasources>
注意:需要把jtds包中\x86\XA下的JtdsXA.dll加入mssql(方法:拷贝到sqlserver的BINN里面,在查询分析器执行\x86\XA下的instjtds.sql)
参考:http://wiki.jboss.org/wiki/Wiki.jsp?page=ConfigDataSources
二、spring配置使用jta
主要就是配置datasource,根据spring文档,直接copy设置即可,不过有个问题搞了满久,就是jee中的jndi的value设置只要和mssql-xa-ds.xml中的jndi-name相同即可,中间搞了满久加java:之类的都报错,后来恼火直接用就好了(JNDI没用过,要学的真tmd多)
大致配置如下:
<jee:jndi-lookup id="dataSource" jndi-name="MSSQLXADS" />
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" />
PS:赞一个spring,呵呵,从jdbc的换到jta还真方便啊
三、jbosscache设置
jbosscache一开始就被网上很多介绍说一堆一堆的很神秘的配置吓倒,其实仔细看看英文文档,对照需要的功能,应该没那么恐怖的,不过现在还确实什么都不明白,事务啊,锁啊都是很晕,留着慢慢边应用边学习了,
由于并不需要集群,我只想要事务和锁,所以就用了local model的配置,大概配置如下
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.cache.jmx.CacheJmxWrapper"
name="jboss.cache:service=Cache">
<!-- Configure the TransactionManager -->
<attribute name="TransactionManagerLookupClass">
org.jboss.cache.transaction.GenericTransactionManagerLookup
</attribute>
<!-- Node locking level : SERIALIZABLE
REPEATABLE_READ (default)
READ_COMMITTED
READ_UNCOMMITTED
NONE -->
<attribute name="IsolationLevel">READ_COMMITTED</attribute>
<!-- Lock parent before doing node additions/removes -->
<attribute name="LockParentForChildInsertRemove">
true
</attribute>
<!-- Valid modes are LOCAL (default)
REPL_ASYNC
REPL_SYNC
INVALIDATION_ASYNC
INVALIDATION_SYNC -->
<attribute name="CacheMode">LOCAL</attribute>
<!-- Max number of milliseconds to wait for a lock acquisition -->
<attribute name="LockAcquisitionTimeout">15000</attribute>
</mbean>
</server>
简单使用方式:
public class CacheManagerJbossCacheImpl {
private static final Log logger = LogFactory
.getLog(CacheManagerJbossCacheImpl.class);
private Cache<String, Object> cache;
public void initCache() {
logger.info("initCache CacheManagerJbossCacheImpl");
CacheFactory factory = new DefaultCacheFactory();
this.cache = factory.createCache(
"com/projecta/cache/jbosscache-config.xml", true);
cache.addCacheListener(new JbossCacheListener());
}
public void insertDepartmentToCache(Department d) {
// Fqn<String> departmentFqn = Fqn.fromString("/department/" +
// d.getBh());
this.cache.put("/department/" + d.getBh(), d.getBh(), d);
logger.info("put cache " + d.getBh());
}
public Department getDepartmentFromCache(String bh) {
return (Department) this.cache.get("/department/" + bh, bh);
}
public void destoryCache() {
this.cache.stop();
this.cache.destroy();
}
}
该类使用spring的bean设置init-method来启动initCache
暂时要解决的问题:
1、偶尔出现javax.transaction.xa.XAException: XAER_RMFAIL: The resource manager is unavailable错误,网上有资料,英文的,看的意思好像是说要配置连接池的大小,加上后好像没点出来,还得继续处理
2、jbosscache的文档还得读,英文的,痛苦,有没好心人翻译下额- -
3、jboss启动瘦身处理,以前都用的tomcat,第一次用jboss,好晕,不知如何下手
4、jta原理了解,jta是不是由容器提供一个事务管理器,然后每个参与事务的连接都由它管理?
5、jndi,,,,,,话说做过好久j2ee了,其实用到这些的机会少之又少,学吧
6、jbosscache是如何参与事务的???虽然测试已经通过,,,
还有?以后加,,,
分享到:
相关推荐
`jboss-spring-int-vfs.jar`就是为了让Spring能够理解和利用JBoss的VFS,从而在JBoss环境下正确地处理文件资源,如加载配置文件、读写日志等。这个插件使得Spring应用无需关心具体的文件系统实现,只需遵循VFS接口,...
jboss-spring-int-vfs.jar
在IT行业中,数据库连接配置是开发和管理应用的重要环节,特别是对于企业级应用服务器如JBoss和数据库系统如SQL Server 2000。本文将详细介绍如何在JBoss 6中配置连接到SQL Server 2000的过程,以及与之相关的源码和...
5. **Spring与JBoss AS的集成**:Spring在JBoss AS中的集成涉及到容器级别的配置,例如使用Spring的Bean管理替代或补充JBoss AS的EJB管理。此外,还可能包括Spring与JBoss交易管理、安全认证、消息队列等服务的整合...
"jboss-as-sprint-int-5.0.0.GA.jar" 和 "jboss-spring-int-vfs.jar" 是与JBoss应用服务器相关的两个关键组件,主要用于Spring框架与JBoss服务器的集成以及虚拟文件系统(Virtual File System,VFS)的支持。...
jboss配置入门 jboss系统是一种基于Java的应用服务器,具有高性能、可扩展、安全性强等特点。在本文中,我们将对jboss的基本配置进行介绍,包括其文件夹结构、配置文件、负载均衡配置等。 jboss文件夹结构 jboss的...
【标题】:“MyEclipse中配置JBoss” 在IT行业中,MyEclipse是一款深受开发者喜爱的集成开发环境(IDE),尤其对于Java EE项目开发来说,它提供了强大的支持。而JBoss则是一个开源的应用服务器,广泛用于部署和管理...
JBoss是一款著名的开源Java应用...总之,JBoss的热部署配置涉及修改配置文件、选择合适的部署目录和类加载器策略,以及可能使用辅助工具。正确配置后,开发者可以高效地测试和调试应用程序,而不必频繁地重启服务器。
JBoss篇:安装与配置 一、安装与配置 在本文中,我们将下载和安装 JBoss 4.2.1.GA 版本。下载地址为 http://sourceforge.net/project/showfiles.php?group_id=22866&package_id=16942&release_id=523619。下载完成...
JBoss连接数据库的配置通常位于`{jboss_home}\server\default\deploy`目录下的特定服务文件,如`mssql-service.xml`。要更改数据库连接,需要修改以下几个属性: 1. `ConnectionURL`:指定数据库服务器地址、端口和...
通过Spring的JBOSS自定义命名空间,可以在Spring配置文件中直接定义和使用这些服务相关的Bean。 ##### 2.3 Load-time weaving(加载时织入) Load-time weaving是一种AOP技术,它能够在类加载到内存中时动态地插入...
然而,有时我们可能希望在非Web环境下或不使用JNDI的情况下配置数据源,这时我们需要在Spring的配置文件中等价地实现JNDI的数据源配置。以下是如何在Spring中进行这种转换的详细步骤和知识点: 1. **理解JNDI配置**...
- **Server Configuration**:这里可以配置JBoss的特定配置文件,如`standalone.xml`或`domain.xml`,以及相关的JVM参数。 - **Classpath**:定义服务器启动时的类路径,通常包括应用程序的库和依赖。 通过以上...
[Packt Publishing] JBoss AS 7 配置部署管理教程 (英文版) [Packt Publishing] JBoss AS 7 Configuration, Deployment and Administration (E-Book) ☆ 出版信息:☆ [作者信息] Francesco Marchioni [出版机构...
### JBoss快速配置详解 JBoss是一款开源的应用服务器,提供了丰富的功能和服务,广泛应用于企业级应用程序的开发与部署。本文将详细介绍如何进行JBoss的基本配置,包括控制台登录窗口的设置、连接数据库以及端口的...
Apache+Jboss(Tomcat)集群配置是一种常见的高可用性和负载均衡解决方案,它通过在前端部署Apache服务器,中间层配置多个Jboss或Tomcat应用服务器,后端连接统一的数据库来实现系统的扩展性和稳定性。以下是配置这个...
本文将深入解析如何在JBoss中配置MySQL的JNDI数据源,确保应用程序能够高效、稳定地访问数据库资源。 ### JBoss与JNDI的关联 JBoss作为一个高性能的Java应用服务器,提供了丰富的功能支持企业级应用开发。JNDI作为...