users@glassfish.java.net

Embedded glassfish adds "__pm" to datasource name and fails to find it

From: janne postilista <jannepostilistat_at_gmail.com>
Date: Mon, 11 Apr 2011 14:39:10 +0300

I'm trying to test my application in Embedded GlassFish 3.1.

I have an ear, inside are some ejb jars, the code uses JPA and
persistence.xml reference to datasource foo-ds:

<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="foo-pu" transaction-type="JTA">
        <jta-data-source>jdbc/foo-ds</jta-data-source>
...

I try to test this:

    @Test
    public void test() throws Exception {
        File configFile = new File("target/classes/blank-domain.xml");
        File tempDir = new File("target/embedded-glassfish-instance");
        String configUri = configFile.toURI().toString();
        GlassFishProperties p = new GlassFishProperties();
        p.setConfigFileReadOnly(true);
        p.setConfigFileURI(configUri);
        p.setProperty("glassfish.embedded.tmpdir", tempDir.getAbsolutePath());
        p.setProperty("keep-temporary-files", "true");

        GlassFish glassfish = GlassFishRuntime.bootstrap().newGlassFish(p);
        glassfish.start();

        File ear = new File("target/services-ear.ear");
        System.out.println(ear.getAbsolutePath());
        Deployer deployer = glassfish.getDeployer();
        deployer.deploy(ear);

And I get error:

PlainTextActionReporterFAILUREDescription: deploy AdminCommandError
occurred during deployment: Exception while preparing the app :
Invalid resource : jdbc/foo-ds__pm. Please see server.log for more
details.
    [name=services-ear

Exception while invoking class
org.glassfish.persistence.jpa.JPADeployer prepare method :
java.lang.RuntimeException: Invalid resource : jdbc/foo-ds__pmdeployed
ear

The resource is defined in blank-domain.xml, which seems to be read as
adding errors to it generates "Failed to create a habitat".
blank-domain.xml:

  <jdbc-resource pool-name="foo-pool" jndi-name="jdbc/foo-ds" />
    <jdbc-connection-pool
datasource-classname="org.h2.jdbcx.JdbcDataSource" name="foo-pool">
      <property name="User" value="sa" />
      <property name="URL" value="jdbc:h2:tcp://localhost/~/test" />
      <property name="driverClass" value="org.h2.Driver" />
      <property name="Password" value="sa" />
    </jdbc-connection-pool>

Nothing useful in the logs. Where does the "__pm" come from? I see
some bugs like http://java.net/jira/browse/GLASSFISH-15430 that claim
to be fixed.