2013-02-25 51 views
4

我想要一个非常简单的Web应用程序部署到CloudBees上的JavaEE Web配置文件堆栈。我创建了一个将被使用的数据库。正在被容器修改的JDBC资源名称('_pm'被附加到它)

我创建了我的WAR文件,并将其部署到Glassfish3配置文件中,但出错。我也尝试过一个JBoss,而且也失败了,但是有一个不同的错误。我已经绑定的数据库使用SDK(而不是CloudBees的XML文件(应用程序,它听起来就像弃用这就是),但不管应用程序一直未能部署(即使重启后),与此错误:

[#|2013-02-25T11:03:57.584+0000|SEVERE|glassfish3.1.2|javax.enterprise.system.tools.admin.org.glassfish.deployment.admin|_ThreadID=12;_ThreadName=AutoDeployer;|Exception while preparing the app : Invalid resource : jdbc/resmandb__pm 
com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Invalid resource : jdbc/resmandb__pm 
    at com.sun.enterprise.connectors.service.ConnectorResourceAdminServiceImpl$MyDataSource.validateResource(ConnectorResourceAdminServiceImpl.java:274) 
    at com.sun.enterprise.connectors.service.ConnectorResourceAdminServiceImpl$MyDataSource.setResourceInfo(ConnectorResourceAdminServiceImpl.java:255) 
    at com.sun.enterprise.connectors.service.ConnectorResourceAdminServiceImpl.lookupDataSourceInDAS(ConnectorResourceAdminServiceImpl.java:245) 
    at com.sun.enterprise.connectors.ConnectorRuntime.lookupDataSourceInDAS(ConnectorRuntime.java:538) 
    at com.sun.enterprise.connectors.ConnectorRuntime.lookupPMResource(ConnectorRuntime.java:469) 
    at org.glassfish.persistence.common.PersistenceHelper.lookupPMResource(PersistenceHelper.java:63) 
    at org.glassfish.persistence.jpa.ProviderContainerContractInfoBase.lookupDataSource(ProviderContainerContractInfoBase.java:71) 
    at org.glassfish.persistence.jpa.PersistenceUnitInfoImpl.<init>(PersistenceUnitInfoImpl.java:108) 
    at org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:155) 
    at org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoader.java:120) 
    at org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:224) 
    at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:495) 
    at org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:233) 
    at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:168) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:871) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:410) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240) 
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:353) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291) 
    at org.glassfish.deployment.autodeploy.AutoOperation.run(AutoOperation.java:145) 
    at org.glassfish.deployment.autodeploy.AutoDeployer.deploy(AutoDeployer.java:575) 
    at org.glassfish.deployment.autodeploy.AutoDeployer.deployAll(AutoDeployer.java:461) 
    at org.glassfish.deployment.autodeploy.AutoDeployer.run(AutoDeployer.java:389) 
    at org.glassfish.deployment.autodeploy.AutoDeployer.run(AutoDeployer.java:380) 
    at org.glassfish.deployment.autodeploy.AutoDeployService$1.run(AutoDeployService.java:220) 
    at java.util.TimerThread.mainLoop(Timer.java:512) 
    at java.util.TimerThread.run(Timer.java:462) 
|#] 

我不明白的是,为什么它寻找资源jdbc/resmandb__pm,这需要我结合(在这种情况下是resman)任何名义,并增加了_pm它。

什么我做错了吗?有对于这个应用程序来说并不多,它可以像Glassfish 3服务器一样运行。编辑:我一直在独立的glassfish环境中进行一些游戏。而且,当我没有glassfish-web.xml中的jdbc资源条目时,它看起来像JPA提供者(在这种情况下,EclipseLink)正在寻找两个jdbc资源:jdbc/_ pm和jdbc/ _nontx,其中是在web.xml中声明的资源的名称。

所以,我还没有尝试,但它看起来像我需要在bees-web.xml中定义这个,这是CloudBees自己的文档试图让人们不使用。不幸的是,GlassFish 3环境中的资源绑定效果不佳。这就是我目前发现的。

回答

0

将资源绑定到应用程序时,必须使用--alias参数来配置它将在应用程序中使用的逻辑名称。对于数据源,如果你在wen.xml有一个资源引用如下:

<resource-ref> 
     <res-ref-name>jdbc/myDB</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <res-auth>Container</res-auth> 
    </resource-ref> 

然后将其绑定数据源为:

bees app:bind --database myDatabase --alias myDB 
+0

嗯。我只是试过这个。这并没有什么不同。仍然收到以下错误:( – EdH 2013-03-01 22:48:46

+0

[#| 2013-03-01T22:44:35.336 + 0000 | SEVERE | glassfish3.1.2 | javax.enterprise.system.core.com.sun.enterprise.v3.server | _ThreadID = 12 ; _ThreadName = AutoDeployer; |准备应用程序时出现异常|#] [#| 2013-03-01T22:44:35.337 + 0000 | SEVERE | glassfish3.1.2 | javax.enterprise.system.core.com.sun.enterprise无效资源:jdbc/resmandb__pm \t at com.sun.enterprise.connectors.ConnectorRuntime.lookupDataSourceInDAS(ConnectorRuntime。).v3.server | _ThreadID = 12; _ThreadName = AutoDeployer; |无效资源: java:540) \t at – EdH 2013-03-01 22:50:00

+0

而且,我的代码中没有任何地方使用__pm作为jdbc地址,而我使用了别名。 – EdH 2013-03-01 22:50:36

相关问题