0

我在 CentOS 6.3 下运行 Jboss 7.1.1。我有一场能够在 Jboss 4.0.2 下运行的战争(旧的,我知道,这就是我们要更新的原因),但我很难让它在 Jboss 7 下运行。

在我的 META-INF/MANIFEST.MF 文件下,我有以下条目:

Dependencies: com.jnetdirect,org.hibernate

在我的 META-INF/jboss-deployment-structure.xml 我有:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
  <deployment>
      <dependencies>
            <module name="org.hibernate" export="true" />
            <module name="com.jnetdirect" export="true" />
      </dependencies>
  </deployment>
</jboss-deployment-structure>

我创建了 {JBOSS_HOME}/modules/com/jnetdirect/main 文件夹,并在其中放置了 JSQLConnect.jar、JSQLConnect.jar.index 和 module.xml。

我的 module.xml 文件包含:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.jnetdirect">
    <resources>
        <resource-root path="JSQLConnect.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
        <module name="javax.servlet.api" optional="true"/>
    </dependencies>
</module>

我的 JSQLConnect.jar。包含 的输出jar -tf JSQLConnect.jar,我.class从使用 vim 和:%s/.class//

当我./standalone.sh从 {JBOSS_HOME}/bin 运行时,我得到以下信息:

13:38:12,402 ERROR [stderr] (MSC service thread 1-1) org.hibernate.HibernateException: Specified JDBC Driver com.jnetdirect.jsql.JSQLDriver class not found
13:38:12,402 ERROR [stderr] (MSC service thread 1-1)    at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:104)
<snip>
13:38:12,430 ERROR [stderr] (MSC service thread 1-1) Caused by: java.lang.ClassNotFoundException: com.jnetdirect.jsql.JSQLDriver from [Module "org.hibernate:main" from local module loader @34985fc6 (roots: /usr/local/src/jboss-as-7.1.1.Final/modules)]
13:38:12,434 ERROR [stderr] (MSC service thread 1-1)    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
<snip>
13:38:12,452 INFO  [stdout] (MSC service thread 1-1) com.cs.common.cache.SessionFactoryCache.processRequest : Exception : org.hibernate.HibernateException: Specified JDBC Driver com.jnetdirect.jsql.JSQLDriver class not found
13:38:12,453 INFO  [stdout] (MSC service thread 1-1)    at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:104)
<snip>
13:38:12,484 INFO  [stdout] (MSC service thread 1-1) Caused by: java.lang.ClassNotFoundException: com.jnetdirect.jsql.JSQLDriver from [Module "org.hibernate:main" from local module loader @34985fc6 (roots: /usr/local/src/jboss-as-7.1.1.Final/modules)]
13:38:12,484 INFO  [stdout] (MSC service thread 1-1)    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)

我尝试在我的standalone.xml 中包含以下内容:

    <subsystem xmlns="urn:jboss:domain:datasources:1.0">
        <datasources>
            <datasource jndi-name="java:jboss/datasources/REDACTED" pool-name="REDACTED" enabled="true" use-java-context="true">
                <connection-url>jdbc:JSQLConnect://redacted.net:1433;DatabaseName=REDACTED</connection-url>
                <driver>jnetdirect</driver>
                <security>
                    <user-name>redacted</user-name>
                    <password>redacted</password>
                </security>
            </datasource>
            <drivers>
                <driver name="jnetdirect" module="com.jnetdirect">
                    <driver-class>com.jnetdirect.jsql.JSQLDriver</driver-class>
                </driver>
            </drivers>
        </datasources>
    </subsystem>

当我这样做时,我在启动时看到以下条目:

13:38:09,720 WARN  [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 27) JBAS010402: Unable to instantiate driver class "com.jnetdirect.jsql.JSQLDriver": java.lang.ClassNotFoundException: com.jnetdirect.jsql.JSQLDriver from [Module "com.jnetdirect:main" from local module loader @34985fc6 (roots: /usr/local/src/jboss-as-7.1.1.Final/modules)]
13:38:09,748 INFO  [org.jboss.as.security] (ServerService Thread Pool -- 44) JBAS013101: Activating Security Subsystem
13:38:09,755 INFO  [org.jboss.as.security] (MSC service thread 1-3) JBAS013100: Current PicketBox version=4.0.7.Final
13:38:09,769 INFO  [org.jboss.as.naming] (ServerService Thread Pool -- 38) JBAS011800: Activating Naming Subsystem
13:38:09,771 INFO  [org.jboss.as.webservices] (ServerService Thread Pool -- 48) JBAS015537: Activating WebServices Extension
13:38:09,786 ERROR [org.jboss.as.controller.management-operation] (ServerService Thread Pool -- 27) Operation ("add") failed - address: ([
    ("subsystem" => "datasources"),
    ("jdbc-driver" => "jnetdirect")
]) - failure description: "JBAS010434: Unable to instantiate driver class \"com.jnetdirect.jsql.JSQLDriver\". See log (WARN) for more details"

但是和以前一样的 ClassNotFoundException。

有趣的是,当我关闭服务器时,我看到以下内容:

13:38:17,424 INFO  [org.jboss.as.server.deployment] JBAS015877: Stopped deployment common.war in 40ms
13:38:17,426 INFO  [org.jboss.as.controller] JBAS014774: Service status report
JBAS014776:    Newly corrected services:
      service jboss.jdbc-driver.jnetdirect (new available)

13:38:17,430 INFO  [org.jboss.as] JBAS015950: JBoss AS 7.1.1.Final "Brontes" stopped in 39ms

我正在删除standalone/log 和standalone/tmp 目录,以及每次运行之间的common.war.deployed 文件。

我想既然这是一个休眠问题,我应该添加com.jnetdirect到休眠模块的依赖项中,但这并没有帮助。

我已经查看了jboss 7 AS 的 sqlserver 数据源、 JBoss 7 上的 JDBC Postgresql 驱动程序如何将 Jboss-as-7.1.1 与 Postgresqlhttps://community.jboss.org/thread/202025连接,尽管没有这些是特定于 JNETDirect 的。

(由于高层的订单,我们正在使用 JNETDirect,所以我无法切换到另一个 JDBC 驱动程序)

想法?

4

1 回答 1

0

原来问题出在模块中的我的 .index 文件上。我删除了它,它加载得很好。不知道 .index 文件应该用于什么或为什么我的文件被破坏了。

于 2013-02-21T14:49:14.707 回答