2015-02-11 107 views
0

我在wildfly8上部署项目,需要java7。 我米jboss5迁移项目wildfly8 所以在jboss5代码JBoss铸造问题

PreparedStatement wrappedStatement = (PreparedStatement) ((org.jboss.resource.adapter.jdbc.WrappedPreparedStatement)connection.prepareStatement(sql)).getUnderlyingStatement(); 

,所以我通过改变它...

PreparedStatement wrappedStatement = (PreparedStatement) ((org.jboss.jca.adapters.jdbc.jdk7.WrappedPreparedStatementJDK7)connection.prepareStatement(sql)).getUnderlyingStatement(); 

,但现在我得到的错误

组织.jboss.jca.adapters.jdbc.jdk7.WrappedPreparedStatementJDK7无法转换为org.jboss.jca.adapters.jdbc.jdk7.WrappedPreparedStatementJDK7

回答

0

通过

PreparedStatement statement = connection.prepareStatement(sql); 

http://docs.oracle.com/javase/7/docs/api/java/sql/Connection.html#prepareStatement(java.lang.String)

更换所有的管型和声明包装在你的代码应该避免使用JBoss/Wildfly特定的代码。

您的应用程序还必须在您的.ear或.war中不包含JBoss和Java EE库。这将避免来自2个不同类加载器加载的同一类的类转换异常。

+0

我改变了它,并且我的错误发生了变化,即org.jboss.jca.adapters.jdbc.jdk7.WrappedPreparedStatementJDK7无法转换为oracle.jdbc.OraclePreparedStatement – Aditi 2015-02-12 12:11:16

1

您需要在耳项目中使用MANIFEST.MF文件。 我把MANIFEST.MF文件包含

依赖关系:org.jboss.ironjacamar.jdbcadapters,com.oracle7

一个新的生产线。将此文件保存在耳朵项目的METAINF中。

1)删除ironjacamar-jdbc- final.jar和ojdbc .jar来自你项目的lib目录。 2)这些罐子已经存在于wildfly8的模块/文件夹中 (当然ojdbc * .jar是由用户配置的)。 3)相关性:名称是相同module.xml文件即

<module xmlns="urn:jboss:module:1.1" name="org.jboss.ironjacamar.jdbcadapters"> 

所以,你必须把模块的专有名称。

4)com.oracle7是wildfly8中ojdbc7.jar的驱动程序名称配置。 您可以将您在standalone.xml中编写的所需名称放在驱动程序标签中。

我以为这个错误是与类加载罐有关。 但我遇到了新的错误 java.sql.SQLException:您无法在托管事务中设置自动提交! 请帮助我。