如果在 Jboss AS 7 中将 jdbc 部署为 Web 应用程序,模块名称是啥
Posted
技术标签:
【中文标题】如果在 Jboss AS 7 中将 jdbc 部署为 Web 应用程序,模块名称是啥【英文标题】:What's the module name if deploy jdbc in Jboss AS 7 as web application如果在 Jboss AS 7 中将 jdbc 部署为 Web 应用程序,模块名称是什么 【发布时间】:2013-08-30 23:45:44 【问题描述】:从这个post 从Jboss AS7 开始,jdbc 驱动程序能够部署为常规应用程序。然而问题是,其他应用程序如何能够引用这个 jdbc jar?
这是我尝试过的,但它不起作用
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
......
<deployment>
<dependencies>
<module name="ojdbc6.jar" />
</dependencies>
</deployment>
.....
</jboss-deployment-structure>
更新
当我部署 ojdbc.jar 时,控制台中有一段日志:
10:56:20,416 INFO [org.jboss.as.server.deployment] (MSC service thread 1-8) JBAS015876: Starting deployment of "ojdbc6.jar"
10:56:21,487 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-2) JBAS010403: Deploying JDBC-compliant driver class oracle.jdbc.OracleDriver (version 11.2)
10:56:21,489 INFO [org.jboss.as.osgi] (MSC service thread 1-7) JBAS011907: Register module: Module "deployment.ojdbc6.jar:main" from Service Module Loader
10:56:21,499 INFO [org.jboss.as.server] (HttpManagementService-threads - 6) JBAS018559: Deployed "ojdbc6.jar"
根据日志 jdbc 模块的名称为 deployment.ojdbc6.jar:main
,但在我更新 jboss-deployment-structure.xml 之后
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
......
<deployment>
<dependencies>
<module name="deployment.ojdbc6.jar:main" />
</dependencies>
</deployment>
.....
</jboss-deployment-structure>
它仍然不起作用。带有以下消息:
10:59:34,448 INFO [org.jboss.as.server] (HttpManagementService-threads - 7) JBAS015870: Deploy of deployment "MyApp.war" was rolled back with failure message "JBAS014771: Services with missing/unavailable dependencies" => ["jboss.deployment.unit.\"MyApp.war.war\".POST_MODULE Missing[JBAS014861: <one or more transitive dependencies>]","jboss.module.service.\"deployment.MyApp.war.war\".main Missing[jboss.module.spec.service.\"deployment.ojdbc6.jar:main\".main]"]
10:59:35,198 INFO [org.jboss.as.server.deployment] (MSC service thread 1-7) JBAS015877: Stopped deployment MyApp.war.war in 749ms
【问题讨论】:
【参考方案1】:您可以通过这种方式引用其他部署中的 jar:
<module name="deployment.YourEarOrWar.YourJar.jar" />
deployment 是引用已部署应用程序的一般前缀。 但是,对于像 jdbc-driver 这样的库,我建议将其放在 JBoss 的模块文件夹中
<module xmlns="urn:jboss:module:1.1" name="driver.ojdbc">
<resources>
<resource-root path="ojdbc6.jar"/>
</resources>
</module>
然后引用它
<module name="driver.ojdbc"/>
另请参阅 https://community.jboss.org/thread/169894 和 http://www.mastertheboss.com/jboss-as-7/how-to-install-a-module-on-jboss-as-7
【讨论】:
谢谢。我尝试了您的建议并更新了原始帖子。还是不行,是不是我遗漏了什么配置? 忘记提及您的解释,链接非常有帮助。 你是对的!它可以工作,模块名称应该只是<module name="deployment.ojdbc.jar" />
以上是关于如果在 Jboss AS 7 中将 jdbc 部署为 Web 应用程序,模块名称是啥的主要内容,如果未能解决你的问题,请参考以下文章
JBoss AS7部署插件(jboss-as-maven-plugin)
远程客户端访问部署在 JBOSS AS 中的 EJB 的 JNDI 循环(7.1.1 最终版)