在Tomcat中部署Spring,配置时需要注意的一些问题
来源:互联网 发布:淘宝上比较好的眼镜店 编辑:程序博客网 时间:2024/06/05 10:28
今天上午从svn上checkout一个项目,里面用到了ZK和Spring框架,本来这个项目是部署在Jboss上的,现在我需要在Tomcat中部署它。下面把我部署时出现的问题及解决方法记录下来:
1.checkout之后,我首先改了Spring的配置文件:applicationContext.xml
将数据源的配置:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:hgbids</value>
</property>
</bean>
替换为:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:application.config.properties"/>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</bean>
并在项目同目录下增加application.config.properties文件,内容为:
# db server config
db.driver=oracle.jdbc.driver.OracleDriver
db.url=jdbc:oracle:thin:@ip:1521:serverName
db.username=loginName
db.password=loginPassword
其中粗体代表需要替换你的实际参数的地方。
本以为这样就可以了,发布,启动Tomcat,报错:
NoClassDefFoundError: javax/transaction/Synchronization
......
Caused by:
java.lang.NoClassDefFoundError: javax/transaction/Synchronization
at java.lang.Class.getDeclaredConstructors0(Native Method)
这个是因为缺少jta.jar包的原因,到网上下了一个jta.jar包,放到lib目录下。
启动又报错:
IllegalStateException: Either 'userTransaction' or 'userTransactionName' or 'transactionManager' or 'transactionManagerName' must be specified
到网上查查看,关于这个错误有这样的说法:
You use JTA so re-introducte the jta.jar when running on Tomcat. As you correctly mentioned, JTA is provided by JBoss out-of-the-box (which is has to because it is a a full J2EE server), tomcat otoh doesn't provide that because it is merely a JSP/Servlet container. (This is the part you already fixed).
Tomcat also doesn't provide anything for distributed transaction, you will need to introduce something yourself, the are standalone JTA providers/manager available wich work perfectly well with Tomcat).
我到配置文件(applicationContext.xml)里看看,发现有这样的配置:
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"></bean>把它换成:
<bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
重新发布,启动,又报错:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'txAdvice': Cannot resolve reference to bean 'transactionManager' while setting bean property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in class path resource [META-INF/commonContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Either 'userTransaction' or 'userTransactionName' or 'transactionManager' or 'transactionManagerName' must be specified
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in class path resource [META-INF/commonContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Either 'userTransaction' or 'userTransactionName' or 'transactionManager' or 'transactionManagerName' must be specified
要解决这个问题,请按照下面的方法进行(转自:http://zkgale.javaeye.com/blog/210421)
java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisito
错误:java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor的解决方法
在使用Spring的AOP编程时,会用到这几个lib:
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
Hibernate使用如下lib:
asm.jar
asm-attrs.jar
其中asm-2.2.2.jar与asm.jar存在类上的冲突!!!
使用其中之一或两者都使用,可能会出现如下错误:
java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit。。。。。。
解决办法是:
1.去掉类路径上的关于Hibernate的3个lib
asm.jar
asm-attrs.jar
cglib-2.1.3.jar
2.加入Spring中的以下4个lib
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
cglib-nodep-2.1_3.jar
好了,到这里,问题就解决完了,发布、启动Tomcat,成功。
- 在Tomcat中部署Spring,配置时需要注意的一些问题
- 关于在eclipse里面配置tomcat需要注意的一些问题
- 在tomcat使用中需要注意的路径问题。
- 在web项目中一些需要注意的问题
- Css中需要注意的一些问题
- andriod中一些需要注意的问题
- 项目部署到tomcat中的时候需要注意的问题
- Tomcat下使用Spring + JPA 需要注意的问题
- struts2+spring+hibernate+json+jquery+flexigrid集成和在集成过程中需要注意的问题
- c++中 关于字符串的一些需要注意的问题
- dll共享段中一些需要注意的问题
- Android游戏开发中需要注意的一些问题
- 数据恢复过程中需要注意的一些问题
- dll共享段中一些需要注意的问题
- 程序竞赛中需要注意的一些小问题2
- 内核中需要注意的一些基础问题集锦
- C/C++中需要注意的一些问题
- JSP中一些需要注意和经常忘记的问题
- 程序分析gprof
- 存储高手速成:文件虚拟化技术
- 请不要做浮躁的嵌入式工程师!
- Global Namespace (全域命名空间)
- 文件虚拟化 虚和实的碰撞
- 在Tomcat中部署Spring,配置时需要注意的一些问题
- 存储虚拟化分析
- vc++之自定义消息案例研习
- photoshop cs3 许可停止工作 解决方法
- BAPI_ASSET_RETIREMENT_POST 固定资产报废 BAPI
- MyEclipse优化技巧
- 25个编程最容易犯的错误
- 软件开发者面试百问
- MySQL Replace INTO的使用