dev@glassfish.java.net

Re: JPA in embedded GF?

From: Jerome Dochez <Jerome.Dochez_at_Sun.COM>
Date: Wed, 05 Aug 2009 13:17:06 -0700

I just added an embedded ejb test in tests/embedded/ejb directory.
It's using the ejb embedded APIs to test a sample ejb bundle. This
should give you some ideas how you can set up your environment to test
EJBs with EJB embedded APIs.

the test passes even without a single exception !

jerome

On Aug 5, 2009, at 11:51 AM, Marina Vatkina wrote:

> Siraj Ghaffar wrote:
>> Marina Vatkina wrote:
>>> Hi Jerome,
>>>
>>> I tried to add a main method to my UnitTest and start it via java
>>> command (using GF_HOME as the pointer to the gf installation), but
>>> it failed with the same error as the maven test ("Address already
>>> in use").
>>>
>>> I put the glassfish-embedded-shell.jar from extras/embedded-shell
>>> and gf-client.jar into the classpath. Is the former the "embedded-
>>> shell.jar? -
>> yes, it is.
>
> OK. I looked at its manifest and this is what it has:
>
> Class-Path: hk2-0.3.81.jar hk2-core-0.3.81.jar config-0.3.81.jar auto-
> depends-0.3.81.jar tiger-types-osgi-0.3.81.jar bean-validator-3.0-JBo
> ss-4.0.0.Beta1-b01.jar glassfish-api-3.0-SNAPSHOT.jar grizzly-utils-1
> .9.17-RC2.jar management-api-3.0.0-b004.jar glassfish-3.0-SNAPSHOT.jar
>
> Do you expect glassfish-embedded-shell.jar to be in the gf modules
> directory to be able to use those referenced jars?
>
> Is there a version of it that refers to the jars without versions in
> their names?
>
> thanks,
> -marina
>
>>> I didn't find the exact name anywhere). The latter I used because
>>> the list of jars that I needed to add explicitly was becoming too
>>> long.
>>>
>>> Regards,
>>> -marina
>>>
>>> Jerome Dochez wrote:
>>>
>>>> I looked at the second issue you reported and I know what's going
>>>> on.
>>>>
>>>> The issue is that maven is invoking the test with a bunch of
>>>> glassfish jars in the classpath (all test dependencies of the
>>>> ejb-container project). It's the normal way maven works. Now
>>>> when invoking inplanted mode, it does not work well because a
>>>> lot of jars are duplicated between 2 class loaders, one set up
>>>> by maven (will all the dependencies I mention above), one set up
>>>> by the inplanted mode. Note that in normal embedded mode with
>>>> maven, we only use the maven classloader, so its works fine.
>>>>
>>>> This duplication of glassfish jars between these two classloaders
>>>> does not really create a class loading problem since through
>>>> delegation we happen to load most classes from the maven
>>>> classloader. However, in terms of habitat metadata (inhabitants
>>>> file) it's two different sets of resources so we end up finding
>>>> most resources in double and therefore we have 2 grizzly
>>>> services started which creates this port busy issue.
>>>>
>>>> There is not much I can do to support such a case, we can support
>>>> what I think you were trying to test but not using any glassfish
>>>> project themselves (ie not using the ejb-container project).
>>>> What you need to do is to set up a new project (a normal ejb jar
>>>> project, where you would just build a ejb application and deploy
>>>> it using the ejb-api that would use an existing glassfish
>>>> installation. The dependencies of such a project should just be
>>>> embedded-shell.jar and ejb-api.jar, nothing else. I believe
>>>> this is what our users will want to do anyhow.
>>>>
>>>> you should keep the ejb-container tests to tests normal embedded
>>>> mode basic functionalities and probably set up new projects that
>>>> would be closer to what users will want to do when using the
>>>> embedded ejb container APIs.
>>>>
>>>> Let me know if you have more questions.
>>>>
>>>> jerome
>>>>
>>>> On Jul 27, 2009, at 5:00 PM, Marina Vatkina wrote:
>>>>
>>>>> Jerome Dochez wrote:
>>>>>
>>>>>> I have fixed both issues, I still see a flashlight related
>>>>>> issue that I will look at tomorrow but it seems to be
>>>>>> functional now.
>>>>>
>>>>>
>>>>>
>>>>> Only the 1st one. The 2nd (opening ports and failing for an
>>>>> already opened port) could be caused caused by using the pre-
>>>>> existing domain.xml. There is no such error if I don't set the
>>>>> pointer(s).
>>>>>
>>>>> I've checked in my changes to the UnitTest, so that you can see
>>>>> exactly what I'm doing. To test existing domain.xml, set env
>>>>> variable S1AS_HOME to the existing GF installation (like for QL
>>>>> in V2).
>>>>>
>>>>> thanks,
>>>>> -marina
>>>>>
>>>>>> Earlier today, I also should have added support for JPA but I
>>>>>> don't have anything to test with. could you or mitesh try it
>>>>>> out and add a test.
>>>>>> to turn on the jpa container just do
>>>>>> server.addContainer(ContainerBuillder.Type.jpa);
>>>>>> jerome
>>>>>> On Jul 27, 2009, at 12:05 PM, Marina Vatkina wrote:
>>>>>>
>>>>>>> Hi Jerome,
>>>>>>>
>>>>>>> I still see both problems. Did you have a chance to look at
>>>>>>> them?
>>>>>>>
>>>>>>> thanks,
>>>>>>> -marina
>>>>>>>
>>>>>>> Marina Vatkina wrote:
>>>>>>>
>>>>>>>> Jerome Dochez wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Jul 22, 2009, at 6:21 PM, Marina Vatkina wrote:
>>>>>>>>>
>>>>>>>>>> Now that you added another test case, I see that I need to
>>>>>>>>>> call separately setInstallRoot() for GF installation
>>>>>>>>>> and setConfigurationFile() for domain.xml ;)
>>>>>>>>>>
>>>>>>>>>> But(!)
>>>>>>>>>>
>>>>>>>>>> 1. The default setup (e.g. EmbeddedTest or UnitTest without
>>>>>>>>>> my temp changes) fail with NPE in binding and lookup
>>>>>>>>>> caused by:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Caused by: java.lang.RuntimeException: Orb initialization
>>>>>>>>>> erorr
>>>>>>>>>> at
>>>>>>>>>> org
>>>>>>>>>> .glassfish
>>>>>>>>>> .enterprise
>>>>>>>>>> .iiop
>>>>>>>>>> .api.GlassFishORBHelper.getORB(GlassFishORBHelper.java: 128)
>>>>>>>>>> at
>>>>>>>>>> com
>>>>>>>>>> .sun
>>>>>>>>>> .enterprise
>>>>>>>>>> .naming
>>>>>>>>>> .impl.SerialContext.getRemoteProvider(SerialContext.java:
>>>>>>>>>> 294)
>>>>>>>>>> at
>>>>>>>>>> com
>>>>>>>>>> .sun
>>>>>>>>>> .enterprise
>>>>>>>>>> .naming
>>>>>>>>>> .impl.SerialContext.getProvider(SerialContext.java: 269)
>>>>>>>>>> ... 28 more
>>>>>>>>>> Caused by: java.lang.NullPointerException
>>>>>>>>>> at
>>>>>>>>>> org
>>>>>>>>>> .glassfish
>>>>>>>>>> .enterprise
>>>>>>>>>> .iiop
>>>>>>>>>> .api.GlassFishORBHelper.getORB(GlassFishORBHelper.java:98)
>>>>>>>>>> ... 30 more
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I have no idea what's going on, I will need Ken Saks to look
>>>>>>>>> at it.
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> 2. If I try to set install root and config file, the ports
>>>>>>>>>> are beeing open and the server doesn't even get to
>>>>>>>>>> deployment:
>>>>>>>>>>
>>>>>>>>>> INFO: GlassFish v3 startup time : Embedded(2728ms)
>>>>>>>>>> startup services(3792ms) total(6520ms)
>>>>>>>>>> Jul 22, 2009 6:08:29 PM
>>>>>>>>>> com.sun.enterprise.v3.server.AppServerStartup run
>>>>>>>>>> SEVERE: Shutting down v3 due to startup exception :
>>>>>>>>>> Address already in use:
>>>>>>>>>> 8080=com.sun.grizzly.http.SelectorThreadHandler_at_1609c13
>>>>>>>>>> Jul 22, 2009 6:08:29 PM
>>>>>>>>>> org.glassfish.admin.mbeanserver.JMXStartupService shutdown
>>>>>>>>>> INFO: ConnectorStartupService: shutting down AMX and JMX
>>>>>>>>>> Jul 22, 2009 6:08:29 PM
>>>>>>>>>> org.glassfish.admin.mbeanserver.JMXStartupService
>>>>>>>>>> $JMXConnectorsStarterThread shutdown
>>>>>>>>>> INFO: Stopped JMXConnectorServer: service:jmx:rmi:///jndi/
>>>>>>>>>> rmi:// uphill:8686/jmxrmi
>>>>>>>>>> Jul 22, 2009 6:08:29 PM AppServerStartup run
>>>>>>>>>>
>>>>>>>>>> Note that there is no other gf instance running at that time.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I have an idea of what might be going on here... did you
>>>>>>>>> instantiate any embedded Port here ?
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> I'm doing this:
>>>>>>>> Server.Builder builder = new
>>>>>>>> Server.Builder("GFEJBContainerProviderImpl");
>>>>>>>> ... creating Files for gf install and domain.xml...
>>>>>>>> EmbeddedFileSystem.Builder efsb = new
>>>>>>>> EmbeddedFileSystem.Builder();
>>>>>>>> efsb.setInstallRoot(installed_root);
>>>>>>>> efsb.setConfigurationFile(domain_file);
>>>>>>>> builder.setEmbeddedFileSystem(efsb.build());
>>>>>>>> server = builder.build();
>>>>>>>> -marina
>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> thanks,
>>>>>>>>>> -marina
>>>>>>>>>>
>>>>>>>>>> Jerome Dochez wrote:
>>>>>>>>>>
>>>>>>>>>>> look in the tests/embedded/inplanted, there are examples
>>>>>>>>>>> of using the embedded file system.
>>>>>>>>>>> jerome
>>>>>>>>>>> On Jul 21, 2009, at 3:25 PM, Marina Vatkina wrote:
>>>>>>>>>>>
>>>>>>>>>>>> What should setEmbeddedFileSystem() be set to? using my
>>>>>>>>>>>> GF installation (/export/v3/gfs/glassfishv3/
>>>>>>>>>>>> glassfish) causes
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> java.io.FileNotFoundException: /export/v3/gfs/
>>>>>>>>>>>> glassfishv3/ lib/ install/applications/__ds_jdbc_ra
>>>>>>>>>>>>
>>>>>>>>>>>> (see missing "glassfish" after "glassfishv3").
>>>>>>>>>>>>
>>>>>>>>>>>> There are also strange NameNotFoundExceptions like
>>>>>>>>>>>> "__SYSTEM" but this can be a side effect of the
>>>>>>>>>>>> original problem.
>>>>>>>>>>>>
>>>>>>>>>>>> thanks,
>>>>>>>>>>>> -marina
>>>>>>>>>>>>
>>>>>>>>>>>> Marina Vatkina wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Jerome Dochez wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Jul 21, 2009, at 8:41 AM, Marina Vatkina wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Jerome Dochez wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Jul 20, 2009, at 10:01 AM, Marina Vatkina wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Jerome Dochez wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On Jul 17, 2009, at 7:18 PM, Marina Vatkina wrote:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Is it possible to use JPA with the latest embedded
>>>>>>>>>>>>>>>>>>> GF?
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> no yet, I have not tried
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> If yes, how do I specify the details of the jdbc
>>>>>>>>>>>>>>>>>>> resource to be used?
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> you would need to run asadmin commands, the
>>>>>>>>>>>>>>>>>> embedded way, through the
>>>>>>>>>>>>>>>>>> EmbeddedAdminContainer.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Is it possible to point to an existing domain.xml
>>>>>>>>>>>>>>>>> instead?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> yes you can do that see Server.ServerBuilder
>>>>>>>>>>>>>>>> setEmbeddedFileSystem()
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Will it also load all apps registered in such domain?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> yes but that suppose you have a valid domains
>>>>>>>>>>>>>> directory (inplanted mode). why would you want to
>>>>>>>>>>>>>> do that ?
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> I won't, I'm afraid of side-effects :(.
>>>>>>>>>>>>> What the setEmbeddedFileSystem() should be set to and
>>>>>>>>>>>>> what is the expected behavior?
>>>>>>>>>>>>> thanks,
>>>>>>>>>>>>> -marina
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> If not, are there any examples that I can look at?
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> yes look at EmbeddedTest in distribution/web.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> thanks,
>>>>>>>>>>>>>>>>>>> -marina
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>>>>>>> To unsubscribe, e-mail: dev- unsubscribe_at_glassfish.dev.java.net
>>>>>>>>>>>>>>>>>>> For additional commands, e-mail: dev- help_at_glassfish.dev.java.net
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>>>>>>>>>>>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>>>>>>>>>>>>>> For additional commands, e-mail: dev- help_at_glassfish.dev.java.net
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>>>> To unsubscribe, e-mail: dev- unsubscribe_at_glassfish.dev.java.net
>>>>>>>>>>>>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>>>>>>>>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>> To unsubscribe, e-mail: dev- unsubscribe_at_glassfish.dev.java.net
>>>>>>>>>>>>>> For additional commands, e-mail: dev- help_at_glassfish.dev.java.net
>>>>>>>>>>>>>>
>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>>>>>>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>>>>>>>>> For additional commands, e-mail: dev- help_at_glassfish.dev.java.net
>>>>>>>>>>>>
>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>>>>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>> To unsubscribe, e-mail: dev-
>>>>>>>>>> unsubscribe_at_glassfish.dev.java.net
>>>>>>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>>>>>
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>>>>> For additional commands, e-mail: dev-
>>>>>>>> help_at_glassfish.dev.java.net
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>