当前位置: 首页 > 知识库问答 >
问题:

需要帮助在JBoss 7项目中为c3p0制作全局模块

葛驰
2023-03-14

我有一个在JBoss 7服务器上运行的项目,我正试图使用c3p0。JBoss 7不支持像以前的版本那样将jar转储到a/lib文件夹中。据我所知,我需要使用新的模块系统。以下是我采取的步骤:

从这里下载c3p0 jar:http://sourceforge.net/projects/c3p0/?source=dlp

将3个jar复制到我的Eclipse项目中并将它们添加到构建路径中(我相当确定这是正确的)。

在JBOSS\u HOME\modules\com\c3p0\main中创建了一个文件夹,并在那里添加了3个jar,另外还创建了一个文件“module.xml”,其中包含以下内容:

<?xml version="1.0" encoding="UTF-8
<module xmlns="urn:jboss:module:1.0" name="com.c3p0">
    <resources>
        <resource-root path="c3p0-0.9.5-pre8.jar"/>
        <resource-root path="c3p0-oracle-thin-extras-0.9.5-pre8.jar"/>
        <resource-root path="mchange-commons-java-0.2.7.jar"/>
    </resources>
</module>

我将以下内容添加到我的JBossstandalone.xml(sun.jdk部分已经存在):

<subsystem xmlns="urn:jboss:domain:ee:1.0">
    <global-modules>
        <module name="sun.jdk" slot="main"/>
        <module name="com.c3p0" slot="main"/>
    </global-modules>
</subsystem>

运行服务器并访问代码中使用c3p0 jar中的类的部分。收到以下错误消息(节略):

WARN  [org.jboss.modules] (http-localhost-127.0.0.1-9091-2) Failed to define class com.mchange.v2.c3p0.ComboPooledDataSource in Module "com.c3p0:main" from local module loader @50908fa9 (roots: C:\jboss-as-web-7.0.2.Final\modules): java.lang.LinkageError: Failed to link com/mchange/v2/c3p0/ComboPooledDataSource (Module "com.c3p0:main" from local module loader @50908fa9 (roots: C:\jboss-as-web-7.0.2.Final\modules))
    at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:401)
    at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:261)
    at org.jboss.modules.ModuleClassLoader$1. loadClassLocal(ModuleClassLoader.java:76)
    ... LOTS MORE
Caused by: java.lang.NoClassDefFoundError: javax/naming/Referenceable
    at java.lang.ClassLoader.defineClass1(Native Method) [:1.7.0_45]
    at java.lang.ClassLoader.defineClass(Unknown Source) [:1.7.0_45]
    at java.security.SecureClassLoader.defineClass(Unknown Source) [:1.7.0_45]
    at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:397)
    ... 86 more
Caused by: java.lang.ClassNotFoundException: javax.naming.Referenceable from [Module "com.c3p0:main" from local module loader @50908fa9 (roots: C:\jboss-as-web-7.0.2.Final\modules)]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:191)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:361)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:333)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:310)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:103)
    ... 90 more
javax.ejb.EJBException: Unexpected Error
    at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx(CMTTxInterceptor.java:157)
    ...
Caused by: java.lang.LinkageError: Failed to link com/mchange/v2/c3p0/ComboPooledDataSource (Module "com.c3p0:main" from local module loader @50908fa9 (roots: C:\jboss-as-web-7.0.2.Final\modules))
    at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:401)
    ...
Caused by: java.lang.NoClassDefFoundError: javax/naming/Referenceable
    at java.lang.ClassLoader.defineClass1(Native Method)
    ...
Caused by: java.lang.ClassNotFoundException: javax.naming.Referenceable from [Module "com.c3p0:main" from local module loader @50908fa9 (roots: C:\jboss-as-web-7.0.2.Final\modules)]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:191)
    ...

我做错了什么?非常感谢您的帮助!

解决方案:

我的模块。xml缺少依赖项。工作原理如下:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.c3p0">
    <resources>
        <resource-root path="c3p0-0.9.5-pre8.jar"/>
        <resource-root path="c3p0-oracle-thin-extras-0.9.5-pre8.jar"/>
        <resource-root path="mchange-commons-java-0.2.7.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
        <module name="org.hibernate"/>
    </dependencies>
</module>

共有1个答案

汪同
2023-03-14

您需要定义<代码>

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.c3p0">
    <resources>
        <resource-root path="c3p0-0.9.5-pre8.jar"/>
        <resource-root path="c3p0-oracle-thin-extras-0.9.5-pre8.jar"/>
        <resource-root path="mchange-commons-java-0.2.7.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>

请注意,javax。api模块只是一组其他EE模块依赖项的集合。

 类似资料:
  • 我再次下载了java sdk(如这里所示:http://www.oracle.com/technetwork/java/JavaFX/downloads/index.html),但是当我右键单击一个项目时,JavaFX并没有显示出来。(如果有关系的话,我使用的是eclipse上的scala插件) 我去了这里:http://www.eclipse.org/efxclipse/install.html

  • 评估项目': tflite'时出现问题。 没有方法的签名:build _ 29 ou 9 K6 cal 0 PML 6 qvuo 3 exmb 2 . Android()适用于参数类型:(build _ 29 ou 9 K6 cal 0 PML 6 qvuo 3 exmb 2 $ _ run _ closure 2)值:[build _ 29 ou 9 K6 cal 0 PML 6 qvuo 3

  • 我已经从Godaddy购买了SSL,我的网站托管在AWS中。我想在AWS上设置SSL。我绑定使用证书管理器导入证书。它问了我三件事: 证书体*--在这里,我从Godaddy获得了。crt文件内容 证书私钥*--这里我仍然困惑需要输入什么。请帮我做这个 证书链--在这里我输入了sf_bundle-g2-g1.crt代码。 请帮助我启用AWS中的SSL。提前致谢

  • 首先,我是C、C++、C#、Android和Swift的开发人员,但我绝对没有JavaScript、PHP或Web开发经验。 即只接受整数值的输入。 这是刀片代码: