我最近尝试过使用jboss和eclipse的JPA程序。为了连接到MySQL,我已经在JBoss安装目录路径中放入了所需的mySQL-connector JAR,并且我已经在jboss的standalone.xml中添加了配置,如果我从eclipse启动jboss,它启动正常,它显示我也是配置好的连接。 但是,如果我添加我的ejb程序并启动服务器它会给我以下错误,当我搜索解决这个问题时,每个论坛都给了我不同的解决方案,但似乎没有解决我的问题。
ERROR
17:34:17,195 ERROR [org.jboss.msc.service.fail](MSC服务主题1-5)MSC00001:无法启动服务 。jboss.deployment.unit" FirstEJBProject.jar" .INSTALL: 服务中的org.jboss.msc.service.StartException jboss.deployment.unit。" FirstEJBProject.jar" .INSTALL:处理失败 阶段安装部署" FirstEJBProject.jar"在 org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] at org.jboss.msc.service.ServiceControllerImpl $ StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] at org.jboss.msc.service.ServiceControllerImpl $ StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] at java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源) [rt.jar:1.7.0_13] at java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知来源) [rt.jar:1.7.0_13]在java.lang.Thread.run(未知来源) [rt.jar:1.7.0_13]引起:java.lang.IllegalArgumentException:空 java at不允许使用name segment org.jboss.msc.service.ServiceName.of(ServiceName.java:85) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] at org.jboss.msc.service.ServiceName.append(ServiceName.java:112) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] at org.jboss.as.naming.deployment.ContextNames.buildServiceName(ContextNames.java:178) 在 org.jboss.as.naming.deployment.ContextNames $ BindInfo。(ContextNames.java:190) 在 org.jboss.as.naming.deployment.ContextNames $ BindInfo。(ContextNames.java:181) 在 org.jboss.as.naming.deployment.ContextNames.bindInfoFor(ContextNames.java:124) 在 org.jboss.as.naming.deployment.ContextNames.bindInfoForEnvEntry(ContextNames.java:165) 在 org.jboss.as.jpa.processor.PersistenceUnitDeploymentProcessor.deployPersistenceUnit(PersistenceUnitDeploymentProcessor.java:319) 在 org.jboss.as.jpa.processor.PersistenceUnitDeploymentProcessor.addPuService(PersistenceUnitDeploymentProcessor.java:258) 在 org.jboss.as.jpa.processor.PersistenceUnitDeploymentProcessor.handleJarDeployment(PersistenceUnitDeploymentProcessor.java:145) 在 org.jboss.as.jpa.processor.PersistenceUnitDeploymentProcessor.deploy(PersistenceUnitDeploymentProcessor.java:120) 在 org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] ... 5更多
17:34:17,430 INFO [org.jboss.as.server](DeploymentScanner-threads - 2)JBAS015870:部署部署" FirstEJBProject.jar"滚了 返回失败消息{" JBAS014671:失败的服务" => {" jboss.deployment.unit \" FirstEJBProject.jar \" .INSTALL" => "服务中的org.jboss.msc.service.StartException jboss.deployment.unit。\" FirstEJBProject.jar \" .INSTALL:失败 进程阶段安装部署 \" FirstEJBProject.jar \""}," JBAS014771:服务与 缺失/不可用的依赖关系" => [" jboss.naming.context.java.comp.FirstEJBProject.FirstEJBProject.StudentLogic.Validatorjboss.naming.context.java.comp.FirstEJBProject.FirstEJBProject.StudentLogicMissing [jboss.naming.context.java.comp.FirstEJBProject.FirstEJBProject .StudentLogic.Validatorjboss.naming.context.java.comp.FirstEJBProject.FirstEJBProject.StudentLogic]#&34;," jboss.naming.context.java.comp.FirstEJBProject.FirstEJBProject.StudentLogic.ValidatorFactoryjboss.naming.context。 java.comp.FirstEJBProject.FirstEJBProject.StudentLogicMissing [jboss.naming.context.java.comp.FirstEJBProject.FirstEJBProject.StudentLogic.ValidatorFactoryjboss.naming.context.java.comp.FirstEJBProject.FirstEJBProject.StudentLogic]"]} 17:34:17,430 INFO [org.jboss.as.server.deployment](MSC服务 线程1-2)JBAS015877:在13ms内停止部署FirstEJBProject.jar 17:34:17,445 INFO [org.jboss.as.controller] (DeploymentScanner-threads - 2)JBAS014774:服务状态报告 JBAS014775:新的缺失/不满足的依赖项: service jboss.naming.context.java.comp.FirstEJBProject.FirstEJBProject.StudentLogic (失踪)受抚养人:[服务 jboss.naming.context.java.comp.FirstEJBProject.FirstEJBProject.StudentLogic.ValidatorFactory, 服务 jboss.naming.context.java.comp.FirstEJBProject.FirstEJBProject.StudentLogic.Validator] JBAS014777:无法启动的服务:服务 。jboss.deployment.unit" FirstEJBProject.jar" .INSTALL: 服务中的org.jboss.msc.service.StartException jboss.deployment.unit。" FirstEJBProject.jar" .INSTALL:处理失败 阶段安装部署" FirstEJBProject.jar"
17:34:17,461错误[org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1){" JBAS014653:复合操作 失败并被退回。失败的步骤:" => {"操作步骤-2" => {" JBAS014671:服务失败" => {" jboss.deployment.unit \" FirstEJBProject.jar \" .INSTALL" => "服务中的org.jboss.msc.service.StartException jboss.deployment.unit。\" FirstEJBProject.jar \" .INSTALL:失败 进程阶段安装部署 \" FirstEJBProject.jar \""}," JBAS014771:服务与 缺失/不可用的依赖关系" => [" jboss.naming.context.java.comp.FirstEJBProject.FirstEJBProject.StudentLogic.Validatorjboss.naming.context.java.comp.FirstEJBProject.FirstEJBProject.StudentLogicMissing [jboss.naming.context.java.comp.FirstEJBProject.FirstEJBProject .StudentLogic.Validatorjboss.naming.context.java.comp.FirstEJBProject.FirstEJBProject.StudentLogic]#&34;," jboss.naming.context.java.comp.FirstEJBProject.FirstEJBProject.StudentLogic.ValidatorFactoryjboss.naming.context。 java.comp.FirstEJBProject.FirstEJBProject.StudentLogicMissing [jboss.naming.context.java.comp.FirstEJBProject.FirstEJBProject.StudentLogic.ValidatorFactoryjboss.naming.context.java.comp.FirstEJBProject.FirstEJBProject.StudentLogic]&#34]}}}
的persistence.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
version="1.0">
<!-- MySQL DataSource -->
<persistence-unit name="STUD">
<jta-data-source>java:/</jta-data-source>
<properties>
<property name="showSql" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
</properties>
</persistence-unit>
sstandalone.xml
<datasource jndi-name="java:/mydb" pool-name="my_pool" enabled="true" jta="true" use-java-context="true" use-ccm="true">
<connection-url>jdbc:mysql://localhost:3306/myschema</connection-url>
<driver>mysql</driver>
<security>
<user-name>root</user-name>
<password>password</password>
</security>
<statement>
<prepared-statement-cache-size>
100
</prepared-statement-cache-size>
<share-prepared-statements/>
</statement>
</datasource>
<drivers>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
<driver name="mysql" module="com.mysql"/>
</drivers>
</datasources>
我在这里遗漏了什么。
我已经尝试过使用mySQL-ds.xml,如果我使用它,它会给出一个不同的错误,因为数据源是无法解析的。如果我知道解决方案也会有所帮助,因为打包我的程序并进行部署,我不需要再次在JBoss中进行SQL连接。
谢谢。
答案 0 :(得分:2)
问题在于<jta-data-source>java:/</jta-data-source>
我需要填写与<datasource jndi-name="java:/mydb"
中提供的名称相同的名称,所以最后自己修复了它,谢谢大家的帮助。
固定持久性XML代码
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
version="1.0">
<!-- MySQL DataSource -->
<persistence-unit name="STUD">
<jta-data-source>java:/mydb</jta-data-source>
<properties>
<property name="showSql" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
</properties>
</persistence-unit>
希望这会有所帮助
答案 1 :(得分:0)
您需要定义<driver>mysql</driver
。这通常通过定义模块来完成。您可以找到所有相关信息here http://bnlconsulting.com/index.php/blog/item/88-jboss-71-adding-mysql-datasource