我是 Web 服务新手。我从另一个开发商那里接手了一些开发项目。 一切都工作正常,直到我创建了自己的测试项目来看看一切如何组合在一起。当我从测试项目恢复到之前的工作项目时,该项目可以编译,但在部署期间不会启动。我什至不知道从哪里开始寻找。
我正在使用 Eclipse Kepler 并部署到 WildFly 服务器。
日志显示以下错误消息:
10:39:06,146 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014613: Operation ("deploy") failed - address: ([("deployment" => "JEM-eap.ear")]) - failure description: {
"JBAS014771: Services with missing/unavailable dependencies" => [
"jboss.deployment.subunit.\"JEM-eap.ear\".\"JEM-ui.war\".weld.weldClassIntrospector is missing [jboss.deployment.subunit.\"JEM-eap.ear\".\"JEM-ui.war\".beanmanager]",
"jboss.deployment.unit.\"JEM-eap.ear\".weld.weldClassIntrospector is missing [jboss.deployment.unit.\"JEM-eap.ear\".beanmanager]"
],
"JBAS014879: One or more services were unable to start due to one or more indirect dependencies not being available." => {
"Services that were unable to start:" => [
"jboss.deployment.subunit.\"JEM-eap.ear\".\"JEM-ejb.jar\".POST_MODULE",
"jboss.deployment.subunit.\"JEM-eap.ear\".\"JEM-ui.war\".INSTALL",
"jboss.deployment.unit.\"JEM-eap.ear\".INSTALL",
"jboss.persistenceunit.\"JEM-eap.ear/JEM-ejb.jar#JPA-ejb\".__FIRST_PHASE__"
],
"Services that may be the cause:" => [
"jboss.deployment.subunit.\"JEM-eap.ear\".\"JEM-ui.war\".beanmanager",
"jboss.deployment.unit.\"JEM-eap.ear\".beanmanager",
"jboss.jdbc-driver.sqljdbc4_jar"
]
}
}
10:39:06,146 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014613: Operation ("add") failed - address: ([
("subsystem" => "datasources"),
("data-source" => "JascoEnergy")
]) - failure description: {"JBAS014771: Services with missing/unavailable dependencies" => [
"jboss.driver-demander.java:/jdbc/JascoEnergy is missing [jboss.jdbc-driver.sqljdbc4_jar]",
"jboss.data-source.java:/jdbc/JascoEnergy is missing [jboss.jdbc-driver.sqljdbc4_jar]"
]}
10:39:06,146 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014613: Operation ("add") failed - address: ([
("subsystem" => "datasources"),
("data-source" => "JascoEnergy")
]) - failure description: {
"JBAS014771: Services with missing/unavailable dependencies" => [
"jboss.driver-demander.java:/jdbc/JascoEnergy is missing [jboss.jdbc-driver.sqljdbc4_jar]",
"jboss.data-source.java:/jdbc/JascoEnergy is missing [jboss.jdbc-driver.sqljdbc4_jar]"
],
"JBAS014879: One or more services were unable to start due to one or more indirect dependencies not being available." => {
"Services that were unable to start:" => [
"jboss.data-source.reference-factory.JascoEnergy",
"jboss.naming.context.java.jdbc.JascoEnergy"
],
"Services that may be the cause:" => [
"jboss.deployment.subunit.\"JEM-eap.ear\".\"JEM-ui.war\".beanmanager",
"jboss.deployment.unit.\"JEM-eap.ear\".beanmanager",
"jboss.jdbc-driver.sqljdbc4_jar"
]
}
}
我解决了我的问题,与你的问题非常相似。
错误日志实际上确实告诉您去哪里查找,它实际上表明您的 jdbc-driver 丢失了。您的 WildFly 服务器 deployments 文件夹中缺少文件 sqljdbc4.jar。您需要将 jar 文件添加到
<your_wildfly_server_folder> --> standalone --> deployments
。添加缺少的 jar 文件后,部署对我来说没问题。
我开始意识到(至少在我的情况下)在我的一次部署尝试中,WildFly 服务器上的垃圾收集器出了问题。这将导致所需的 jar 文件(在您的情况下为 sqljdbc4.jar)在服务器上取消部署。由于这是您自己的应用程序的依赖项,因此部署您的应用程序将不起作用。 如果您看到
deployments文件夹中存在 jar 文件,但仍然无法部署应用程序,则需要先重新部署该 jar 文件。您或许可以从 WildFly 管理控制台执行此操作,但我还没有找到具体方法。您还可以通过转到 deployments 文件夹,找到一个与丢失的 jar 文件完全相同但具有 .undeployed 扩展名的文件(在您的情况下为 sqljdbc4.jar.undeployed),然后将其删除。如果一切顺利,WildFly 将自动重新部署您的 jar 文件。