Mysql 尝试使用@DataSourceDefinition部署数据源时发生ClassNotFoundException

Mysql 尝试使用@DataSourceDefinition部署数据源时发生ClassNotFoundException,mysql,jakarta-ee,wildfly,Mysql,Jakarta Ee,Wildfly,我正在尝试部署带有@DataSourceDefinition注释的数据源 当wildfly部署jar时,它抛出一个ClassNotFoundException 我将mysql jdbc驱动程序放在部署目录中。我已经在standalone.xml中配置的数据源中使用了com.mysql.jdbc.Driver类。我没有在“modules\system\layers\base”下创建带有jdbc驱动程序的模块 下面是带有注释的类: @Stateless @DataSourceDefinition(n

我正在尝试部署带有@DataSourceDefinition注释的数据源

当wildfly部署jar时,它抛出一个ClassNotFoundException

我将mysql jdbc驱动程序放在部署目录中。我已经在standalone.xml中配置的数据源中使用了com.mysql.jdbc.Driver类。我没有在“modules\system\layers\base”下创建带有jdbc驱动程序的模块

下面是带有注释的类:

@Stateless
@DataSourceDefinition(name = "java:global/jdbc/testingDS",
    className = "com.mysql.jdbc.Driver",
    portNumber = 3306,
    serverName = "localhost",
    databaseName = "testing",
    user = "testing",
    password = "testing")

public class DataSourceDeployment {
  public void someMethod() { }
}
以下是例外情况(这是*.failed文件):


CFNE正是它应该的样子

模块中有mysql jdbc驱动程序,但您的部署和它的
@DataSourceDefinition
对此一无所知

@DataSourceDefinition
使用deployments classloader加载jdbc驱动程序,但它在模块中不可用

要解决这个问题,你应该

1) 通过manifest.mf/jboss-deployment-structure.xml将部署的依赖项添加到mysql驱动程序模块中,有关详细信息,请参阅

2) 将jdbc驱动程序添加到war的lib目录

但我肯定会选择1)

{
    "JBAS014671: Failed services" => {"jboss.deployment.unit.\"DatasourceDeploymentTest-1.jar\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"DatasourceDeploymentTest-1.jar\".INSTALL: JBAS018733: Failed to process phase INSTALL of deployment \"DatasourceDeploymentTest-1.jar\"
    Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from [Module \"deployment.DatasourceDeploymentTest-1.jar:main\" from Service Module Loader]
    Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from [Module \"deployment.DatasourceDeploymentTest-1.jar:main\" from Service Module Loader]"},
    "JBAS014771: Services with missing/unavailable dependencies" => [
        "jboss.naming.context.java.comp.DatasourceDeploymentTest-1.DatasourceDeploymentTest-1.DataSourceDeployment.InstanceName is missing [jboss.naming.context.java.comp.DatasourceDeploymentTest-1.DatasourceDeploymentTest-1.DataSourceDeployment]",
        "jboss.naming.context.java.comp.DatasourceDeploymentTest-1.DatasourceDeploymentTest-1.DataSourceDeployment.ORB is missing [jboss.naming.context.java.comp.DatasourceDeploymentTest-1.DatasourceDeploymentTest-1.DataSourceDeployment]",
        "jboss.deployment.unit.\"DatasourceDeploymentTest-1.jar\".weld.weldClassIntrospector is missing [jboss.deployment.unit.\"DatasourceDeploymentTest-1.jar\".beanmanager]",
        "jboss.naming.context.java.comp.DatasourceDeploymentTest-1.DatasourceDeploymentTest-1.DataSourceDeployment.HandleDelegate is missing [jboss.naming.context.java.comp.DatasourceDeploymentTest-1.DatasourceDeploymentTest-1.DataSourceDeployment]",
        "jboss.naming.context.java.comp.DatasourceDeploymentTest-1.DatasourceDeploymentTest-1.DataSourceDeployment.ValidatorFactory is missing [jboss.naming.context.java.comp.DatasourceDeploymentTest-1.DatasourceDeploymentTest-1.DataSourceDeployment]",
        "jboss.naming.context.java.comp.DatasourceDeploymentTest-1.DatasourceDeploymentTest-1.DataSourceDeployment.InAppClientContainer is missing [jboss.naming.context.java.comp.DatasourceDeploymentTest-1.DatasourceDeploymentTest-1.DataSourceDeployment]",
        "jboss.naming.context.java.comp.DatasourceDeploymentTest-1.DatasourceDeploymentTest-1.DataSourceDeployment.Validator is missing [jboss.naming.context.java.comp.DatasourceDeploymentTest-1.DatasourceDeploymentTest-1.DataSourceDeployment]"
    ]
}