Java DB Web starter dans Bluemix


J'essaie d'exécuter un[Java DB Web Starter] [1] créé dans[IBM Bluemix] [2] dans mon serveur local [Websphere Liberty][3], mais il continue de donner l'erreur ci-dessous

[ERREUR] CWWJP0029E: Le serveur ne trouve pas l'unité de persistance openjpa-todo dans le liberty-IRDS.module de guerre et l'application JavaDBApp. [ERREUR] CWNEN0035E: La référence java: comp / env/openjpa-todo / entitymanager de type javax.persistance.EntityManager pour le composant null dans le liberty-IRDS.module de guerre du L'application JavaDBApp ne peut pas être résolue. [err] javax.nommer.NamingException: CWNEN1001E: L'objet référencé par le nom JNDI java: comp / env/openjpa-todo / entitymanager n'a pas pu être instancié. Si le nom de référence correspond à un nom JNDI dans les liaisons de descripteur de déploiement pour l'application effectuant la recherche JNDI, assurez-vous que le mappage de nom JNDI dans la liaison de descripteur de déploiement est correct. Si le mappage de noms JNDI est correct, assurez-vous que la ressource cible peut être résolue avec le nom spécifié par rapport au contexte initial par défaut. [L'exception racine est com.IBM.wsspi.injectionengine.InjectionException: La référence java: comp / env/openjpa-todo / entitymanager de type javax.persistance.EntityManager pour le composant null dans le liberty-IRDS.le module war de l'application JavaDBApp ne peut pas être résolu.] [err] à com.ibm.ws.injectionengine.osgi.internal.naming.InjectionJavaColonHelper.newCannotInstantiateObjectException(InjectionJavaColonHelper.java:183) [ERR] à [classes internes] [err] à javax.nommer.InitialContext.recherche (Source inconnue) [err] à l'exemple.jpa.TODOListResource.getEm(TODOListResource.java:184) [err] à l'exemple.jpa.TODOListResource.(TODOListResource.java: 35)

Étapes effectuées:

  • Créer Java DB Web Starter dans Bluemix
  • Télécharger le code
  • Modifier le serveur.xml comme suggéré-Essayé avec la connexion à la base de données locale et à la base de données hébergée dans le cadre de Web Starter app -

    Application Application déployée

    Le Server.xml

    <!-- Enable features -->
    <featureManager>
        <feature>webProfile-7.0</feature>
        <feature>localConnector-1.0</feature>
    </featureManager>
    
    <!-- To access this server from a remote client add a host attribute to the   following element, e.g. host="*" -->
    <httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>
    
    <!-- Automatically expand WAR files and EAR files -->
    <applicationManager autoExpand="true"/>
    
    
    
    <applicationMonitor updateTrigger="mbean"/>
    

    <library id="MySQLLib">
    <fileset dir="${server.config.dir}/lib" id="mysql-connector-jar" includes="mysql-connector-java-*.jar"/>
    </library>
    
    <webApplication id="JavaDBApp" location="liberty-IRDS.war" name="JavaDBApp"/>
    </server>
    

    Également essayé: Pour se connecter à DB dans Java DB Web starter


    <server description="new server">
    
    <!-- Enable features -->
    <featureManager>
    <feature>webProfile-7.0</feature>
    <feature>localConnector-1.0</feature>
    </featureManager>
    
    <!-- To access this server from a remote client add a host attribute to  the following element, e.g. host="*" -->
    <httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>
    
    <!-- Automatically expand WAR files and EAR files -->
    <applicationManager autoExpand="true"/>
    
    
    
    <applicationMonitor updateTrigger="mbean"/>
    <dataSource id="mydbdatasource" jndiName="jdbc/mydbdatasource"> 
    <jdbcDriver libraryRef="MySQLLib"/>
                <properties  url="db2://user13711:[email protected]:50000/SQLDB" user="user13711" password="****"/> 
     </dataSource> 
    
    
    <library id="MySQLLib">
    <fileset dir="${server.config.dir}/lib" id="mysql-connector-jar" includes="mysql-connector-java-*.jar"/>
    </library>
    
    <webApplication id="JavaDBApp" location="liberty-IRDS.war" name="JavaDBApp"/>
    </server>
    
Author: habs, 2016-01-22

1 answers

Si vous commencez avec l'application standard, l'application est configurée correctement dès la sortie de la boîte sur bluemix. Il accomplit cela en activant la fonctionnalité cloudAutoWiring-1.0 dans le serveur.xm. Cela câblera automatiquement jdbc / mydbdatasource à la ressource-ref dans le web de l'application.XML.

Pour utiliser le passe-partout localement:

Vous devez effectuer quelques étapes pour connecter l'application au serveur, car bluemix ne peut pas le faire pour vous dans un environnement local.

  1. Assurer un jdbc fonction est activée sur le serveur.xml (que vous avez parce que webProfile-7.0 tourne sur jdbc-4.1)
  2. Configurez une source de données dans votre serveur.xml avec le nom jndi `"jdbc/mydbdatasource" dans le serveur.xml

Configuration de la source de données dans le serveur.xml ressemble à ceci:

<dataSource id='mydbdatasource' jndiName='jdbc/mydbdatasource' jdbcDriverRef='myJDBCDriver'> 
    <properties ... />  <!-- depends on what DB you are using -->
</dataSource>

<jdbcDriver id="myJDBCDriver">
    <library>
        <fileset dir="C:/path/to/your/jdbc/driver.jar"/>
    </library>
</jdbcDriver>

Comme indiqué dans l'exemple de code, le <properties> que vous utilisez dépend du pilote JDBC que vous utilisez.
Pour une liste des propriétés à utiliser pour tous les principaux pilotes JDBC, consultez DataSource d'IBM configuration doc.

 1
Author: Andy Guibert, 2016-01-22 17:33:32