web-dev-qa-db-fra.com

Configuration Wildfly avec DataSource

c'est la première fois que j'essaye d'installer une source de données sur mon serveur Wildfly. J'ai essayé de suivre des tutoriels que j'ai trouvés sur Google mais cela ne fonctionne toujours pas.

Je travaille sur un service Web, mais je continue à avoir des erreurs lorsque je déploie mon fichier .war.

Voici le dernier journal lorsque l'application est déployée:

22:16:33,049 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015877: Stopped deployment IslamicPostsWS.war (runtime-name: IslamicPostsWS.war) in 7ms
22:16:33,184 INFO  [org.jboss.as.server] (XNIO-1 task-2) JBAS018558: Undeployed "IslamicPostsWS.war" (runtime-name: "IslamicPostsWS.war")
22:16:33,186 INFO  [org.jboss.as.controller] (XNIO-1 task-2) JBAS014774: Service status report
JBAS014777:   Services which failed to start:      service jboss.deployment.unit."IslamicPostsWS.war".POST_MODULE

22:16:35,518 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-6) JBAS015877: Stopped deployment IslamicPostsWS (runtime-name: IslamicPostsWS) in 7ms
22:16:35,660 INFO  [org.jboss.as.server] (XNIO-1 task-6) JBAS018558: Undeployed "IslamicPostsWS" (runtime-name: "IslamicPostsWS")
22:16:38,358 INFO  [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 2) JBAS015018: Deployment IslamicPostsWS was previously deployed by this scanner but has been removed from the server deployment list by another management tool. Marker file C:\Users\Ilhami\workspace-services\.metadata\.plugins\org.jboss.ide.Eclipse.as.core\WildFly_8.0_Runtime_Server1396040937545\deploy\IslamicPostsWS.undeployed is being added to record this fact.
22:17:00,406 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-7) JBAS015876: Starting deployment of "IslamicPostsWS.war" (runtime-name: "IslamicPostsWS.war")
22:17:00,540 ERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 2) JBAS014613: Operation ("deploy") failed - address: ([("deployment" => "IslamicPostsWS.war")]) - failure description: {
    "JBAS014771: Services with missing/unavailable dependencies" => ["jboss.naming.context.Java.module.IslamicPostsWS.IslamicPostsWS.DefaultDataSource is missing [jboss.naming.context.Java.jboss.datasources.ExampleDS]"],
    "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.unit.\"IslamicPostsWS.war\".component.\"com.Sun.faces.config.ConfigureListener\".START",
            "jboss.deployment.unit.\"IslamicPostsWS.war\".component.\"javax.faces.webapp.FacetTag\".START",
            "jboss.deployment.unit.\"IslamicPostsWS.war\".component.\"javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV\".START",
            "jboss.deployment.unit.\"IslamicPostsWS.war\".component.\"javax.servlet.jsp.jstl.tlv.ScriptFreeTLV\".START",
            "jboss.deployment.unit.\"IslamicPostsWS.war\".component.\"org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher\".START",
            "jboss.deployment.unit.\"IslamicPostsWS.war\".component.\"org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap\".START",
            "jboss.deployment.unit.\"IslamicPostsWS.war\".deploymentCompleteService",
            "jboss.deployment.unit.\"IslamicPostsWS.war\".jndiDependencyService",
            "jboss.naming.context.Java.module.IslamicPostsWS.IslamicPostsWS.env.jdbc.TestDB",
            "jboss.undertow.deployment.default-server.default-Host./IslamicPostsWS",
            "jboss.undertow.deployment.default-server.default-Host./IslamicPostsWS.UndertowDeploymentInfoService"
        ],
        "Services that may be the cause:" => [
            "jboss.jdbc-driver.com_mysql_jdbc_Driver",
            "jboss.naming.context.Java.jboss.datasources.ExampleDS"
        ]
    }
}
22:17:00,683 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS018559: Deployed "IslamicPostsWS.war" (runtime-name : "IslamicPostsWS.war")
22:17:00,683 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 2) JBAS014774: Service status report
JBAS014775:    New missing/unsatisfied dependencies:
      service jboss.naming.context.Java.jboss.datasources.ExampleDS (missing) dependents: [service jboss.naming.context.Java.module.IslamicPostsWS.IslamicPostsWS.DefaultDataSource]

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://Java.Sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://Java.Sun.com/xml/ns/persistence http://Java.Sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="JPADB">
        <jta-data-source>Java:jboss/datasources/DBTest</jta-data-source>
        <properties>
            <property name="showSql" value="true"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
        </properties>
    </persistence-unit>
</persistence>

Dites-moi si vous avez besoin de plus de fichiers.

7
Ilhami

pouvez-vous poster votre définition de source de données?

Je pense qu'il serait préférable de tester le déploiement de la source de données «autonome». Je veux dire séparé du déploiement d'une application réelle, juste pour tester si votre source de données fonctionne ou non . en utilisant la console Web (localhost: 9990/console).

Il semble également y avoir des problèmes avec l’exemple préconfiguré DS de wildfly. Avez-vous supprimé cette DS? Standalone.xml contient également une référence sur ExampleDS qui pourrait être cassée.

6
shillner

Allez dans votre console wildfly (quelque chose comme localhost: 9990) et éditez la section Configuration-> Conteneur-> EE-> Liaisons par défaut. Définissez la source de données par défaut sur le nom JNDI d'une source de données valide. 

J'ai supprimé celle par défaut qui se trouvait là et je l'ai simplement dirigée vers ma source de données principale car le serveur existe pour exécuter une seule application. 

14
user3402489

Vous avez probablement la déclaration ds "Java: jboss/datasources/ExampleDS" manquante dans votre section standalone.xml xmlns "urn: jboss: domain: datasources: 2.0", et cela fonctionnera (voici l'exemple de la configuration par défaut):

            <datasource jndi-name="Java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-Java-context="true">
                <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
                <driver>h2</driver>
                <security>
                    <user-name>sa</user-name>
                    <password>sa</password>
                </security>
            </datasource>
            <drivers>
                <driver name="h2" module="com.h2database.h2">
                    <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                </driver>
            </drivers>

Ou vous pouvez également ajouter à travers l'interface utilisateur comme mentionné par une autre réponse.

10
Nabil M

En supposant que vous utilisez une base de données MySQL, vous pouvez créer un DS de la manière suivante:

(1) Téléchargez le pilote mysql à partir d’ici: http://dev.mysql.com/downloads/connector/j/

(2) Copiez le pilote mysql dans: WILDFLY_HOME/modules/system/layers/base/com/mysql/main

(3) Depuis la console JBoss (ou Wildfly), exécutez la commande suivante:

/subsystem=datasources/jdbc-driver=mysql:add(driver-name=mysql, driver-module-name=com.mysql, driver-class-name=com.mysql.jdbc.Driver)

(4) Puis, toujours depuis la console JBoss (ou Wildfly), exécutez la commande:

/subsystem=datasources/data-source=YourDS:add(driver-name=mysql, user-name=USERNAME, password=PASSWORD, connection-url=jdbc:mysql://localhost:3306/YOURDATABASE, min-pool-size=5, max-pool-size=15, jndi-name=Java:jboss/datasources/YourDS, enabled=true, validate-on-match=true, valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker, exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter)

Voila. Vous avez maintenant une source de données avec un chemin JNDI de: Java: jboss/datasources/YourDS

2
Alex Petty

J'ai eu

service jboss.naming.context.Java.jboss.datasourservice jboss.naming.context.Java.jboss.datasources.ExampleDS (manquant) dépendants: ...

sur wildfly-8.1.0.Final.

A mon humble avis

en standalone/configuration/standalone-full.xml il y avait

<default-bindings ... datasource="Java:jboss/datasources/ExampleDS" ...

et

<datasource jndi-name="Java:/datasources/ExampleDS"...

mésappariement jndi-name!

J'ai créé ExampleDS2 avec jndi-name = "Java: jboss/datasources/ExampleDS". Cela a résolu mon problème.

1
Sam Sol

Vérifiez si les références de configuration default-bindings à la source de données correcte: https://docs.jboss.org/author/display/WFLY8/Default+EE++Bindings+Configuration

1
Marek Gregor