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>
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.
- Assurer un jdbc fonction est activée sur le serveur.xml (que vous avez parce que
webProfile-7.0
tourne surjdbc-4.1
) - 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.