Java DB Web启动程序在Bluemix中

时间:2016-01-22 14:57:53

标签: java database ibm-cloud websphere-liberty devops

我正在尝试在我的本地[Websphere Liberty] [3]服务器上运行[IBM Bluemix] [2]中创建的[Java DB Web Starter] [1],但它一直给出以下错误

[错误] CWWJP0029E:服务器在liberty-IRDS.war模块和JavaDBApp应用程序中找不到openjpa-todo持久性单元。 [错误] CWNEN0035E:无法解析JavaDBApp应用程序的liberty-IRDS.war模块中null组件的javax.persistence.EntityManager类型的java:comp / env / openjpa-todo / entitymanager引用。 [错误] javax.naming.NamingException:CWNEN1001E:无法实例化java:comp / env / openjpa-todo / entitymanager JNDI名称引用的对象。如果引用名称映射到执行JNDI查找的应用程序的部署描述符绑定中的JNDI名称,请确保部署描述符绑定中的JNDI名称映射正确。如果JNDI名称映射正确,请确保可以使用相对于默认初始上下文的指定名称来解析目标资源。 [根异常是com.ibm.wsspi.injectionengine.InjectionException:JavaDBApp应用程序的liberty-IRDS.war模块中null组件的javax.persistence.EntityManager类型的java:comp / env / openjpa-todo / entitymanager引用无法解决。]     [err] at com.ibm.ws.injectionengine.osgi.internal.naming.InjectionJavaColonHelper.newCannotInstantiateObjectException(InjectionJavaColonHelper.java:183)     [内部班级] [错误]     [错误]在javax.naming.InitialContext.lookup(未知来源)     [err] at example.jpa.TODOListResource.getEm(TODOListResource.java:184)     [err]在example.jpa.TODOListResource。(TODOListResource.java:35)

已完成的步骤:

  • 在Bluemix中创建Java DB Web Starter
  • 下载代码
  • 按照建议修改server.xml - 尝试连接到本地Db和作为Web Starter应用程序一部分托管的数据库 -

    - 已部署的应用程序

    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>
    

    还尝试:连接到Java DB Web starter中的DB

    <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:2gGhHNZvJwKc@75.126.155.153: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 个答案:

答案 0 :(得分:1)

如果您从样板应用程序开始,则应用程序在bluemix上开箱即用。它通过启用server.xm中的cloudAutoWiring-1.0功能来实现此目的。这将自动将jdbc / mydbdatasource连接到应用程序的web.xml中的resource-ref。

在本地使用样板:

您需要采取一些步骤将应用程序连接到服务器,因为bluemix无法在本地环境中为您执行此操作。

  1. 确保在server.xml中启用了jdbc功能(因为webProfile-7.0已启用jdbc-4.1所以您拥有该功能)
  2. 使用jndi名称`&#34; jdbc / mydbdatasource&#34;在server.xml中配置数据源。在server.xml中
  3. server.xml中的数据源配置如下所示:

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

    如代码示例中所述,您使用的<properties>取决于您使用的JDBC驱动程序。
    有关用于所有主要JDBC驱动程序的属性的列表,请查看IBM's DataSource configuration doc