连接到mysql时JBoss服务器异常

时间:2013-02-27 20:24:55

标签: mysql eclipse jpa jboss ejb

我最近尝试过使用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连接。

谢谢。

2 个答案:

答案 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