0

.war ファイルを使用してJbossに新しいアプリケーションを作成し、起動時に MySQL DB に接続しようとしています (init メソッド) 。standalone-sip.xmlを変更し、次のドライバーを追加しました: https://zorq. net/b/2011/07/12/adding-a-mysql-datasource-to-jboss-as-7/

起動ログで、ドライバーとデータソースが正しく読み込まれていることがわかります。

23:19:30,565 INFO  [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 28) JBAS010404: **Deploying non-JDBC-compliant driver class com.mysql.jdbc.Driver** (version 5.1)
23:19:30,748 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015876: Starting deployment of "mysql-connector-java-5.1.22-bin.jar"
23:19:30,750 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-3) JBAS010400: **Bound data source [java:jboss/datasources/opencall]**
23:19:30,933 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-4) JBAS010404: Deploying non-JDBC-compliant driver class com.mysql.jdbc.Driver (version 5.1)
23:19:30,954 INFO  [org.jboss.as.osgi] (MSC service thread 1-1) JBAS011907: Register module: Module "deployment.mysql-connector-java-5.1.22-bin.jar:main" from Service Module Loader

しかし、私は見る:

23:18:50,959 ERROR [stderr] (MSC service thread 1-5) java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from [Module "deployment.opencall-2.1.0-SNAPSHOT.war:main" from Service Module Loader]
23:18:50,959 ERROR [stderr] (MSC service thread 1-5)    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)

その後、私は見ます:

23:18:51,700 INFO  [org.jboss.as.server] (Controller Boot Thread) JBAS018559: Deployed "mysql-connector-java-5.1.22-bin.jar"

問題は、mysql ドライバーがロードされる前にアプリケーションが起動していることだと思います。しかし、展開前の起動時にアプリに mysql ドライバーを強制的に使用させる方法がわかりません。これは私のコードです: Jboss なしで実行すると、war ファイルをデプロイした場合にのみ正常に動作します。

try {

    Class.forName(dbClass).newInstance();

} catch (InstantiationException e) {
    logger.error("InstantiationException() Exception");
    e.printStackTrace();
} catch (IllegalAccessException e) {
    logger.error("IllegalAccessException() Exception");
    e.printStackTrace();
}
        if (dbPassword.equals(null))
    dbPassword="";
    Connection dbConnection = DriverManager.getConnection (dbUrl,dbUserName,dbPassword);
    dbConnection.close();

これを見つけました:これは同様の問題ですか: http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

4

1 に答える 1

0
<!-- mysql dependencies -->
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.23</version>
    </dependency>

Maven の依存関係 (pom.xml) に mysql を追加してから、再ビルドします。

于 2013-02-09T09:24:00.570 に答える