dev@glassfish.java.net

Re: JPA in embedded GF?

From: Marina Vatkina <Marina.Vatkina_at_Sun.COM>
Date: Wed, 05 Aug 2009 11:51:48 -0700

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
>