users@glassfish.java.net

Re: Issue with maven-embedded-glassfish-plugin version 3.1(3.1.1)

From: Bhavanishankar <bhavanishankara.sapaliga_at_oracle.com>
Date: Wed, 14 Mar 2012 21:27:22 +0530

Hi Vasile,

We tried various ways to reproduce your issue through last week, but in
vain. So it would really great if you could provide us the simple
application that can reproduce the issue.

I believe it won't be so hard for you to create a simple testcase
because we also used the basic spring web service/jpa application
available @ springsource[1] (with slight modifications to include JPA
classes)

Thanks,

Bhavani.

[1]
http://www.springsource.org/download/community?project=Spring%2520Web%2520Services

On 03/14/2012 06:19 PM, Mirea Vasile wrote:
>
> Hi Bhavani,
>
> The class HqlToken
> is defined in the package org.hibernate.hql.internal.ast who is
> included in the library:
> <dependency>
> <groupId>org.hibernate</groupId>
> <artifactId>hibernate-core</artifactId>
> <version>4.0.1.Final</version>
> </dependency>
>
>
> I am using in my project the following dependency directly:
> <dependency>
> <groupId>org.hibernate</groupId>
> <artifactId>hibernate-entitymanager</artifactId>
> <version>4.0.1.Final</version>
> </dependency>
>
> who is automatically including the hibernate-core library.
> Automatically is included the hibernate-jpa-2.0-api-1.0.1.Final.jar
> library too, I am not using other JPA implementations/libraries.
> All this 3 libraries are in the WEB-INF/lib/ directory (or in the jar
> file).
>
> What is maybe important too is that I am using the Spring Framework
> 3.1.0.RELEASE.
>
> Try to reproduce with this version of hibernate I am
> using(4.0.1.Final) to see if you can.
>
> Thanks,
> Vasile.
>
> ------------------------------------------------------------------------
> *Von:* Bhavanishankar <bhavanishankara.sapaliga_at_oracle.com>
> *An:* Mirea Vasile <mirea_vasile_at_yahoo.com>
> *CC:* "users_at_embedded-glassfish.java.net"
> <users_at_embedded-glassfish.java.net>; "users_at_glassfish.java.net"
> <users_at_glassfish.java.net>; Sakshi Jain <sakshi.jain_at_oracle.com>
> *Gesendet:* 8:27 Mittwoch, 14.März 2012
> *Betreff:* Re: Issue with maven-embedded-glassfish-plugin version
> 3.1(3.1.1)
>
> Hi Vasile,
>
> We (Sakshi more specifically), created the application as per the
> instructions you have provided. The spring application is based on ^[1]
> The application runs successfully with embedded GlassFish (deployment
> done through 'admin' goal of embedded plugin).
>
> As part of the application, we included WEB-INF/sun-web.xml that reads:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD
> Application Server 9.0 Servlet 2.5//EN"
> "http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd"
> <http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd>>
> <sun-web-app error-url="">
> <class-loader delegate="false"/>
> </sun-web-app>
>
> The JPA classes are bundled in a separate JAR file and the JPA jar is
> bundled inside spring application's WEB-INF/lib. Also,
> hibernate-3.2.2.ga.jar is bundled with the application.
>
> When the application runs, org.hibernate.hql.ast.HqlToken indeed get
> loaded from WEB-INF/lib/hibernate-3.2.2.ga.jar
>
> But in your case, the app seems to be trying to load
> org.hibernate.hql*.internal.*ast.HqlToken. Which JAR this class is
> supposed to come from?
>
> Thanks,
>
> Bhavani
>
> [1]
> http://www.springsource.org/download/community?project=Spring%2520Web%2520Services
>
> On 02/24/2012 03:22 PM, Mirea Vasile wrote:
>>
>>
>> Hi Bhavani,
>>
>> In this moment I am stuck with the plugin and if the bugfixing takes
>> longer I have no other option then trying to deploy using the maven
>> cargo plugin.
>>
>> Until the bug will be fixed, there is maybe a work around like
>> specifying a library in the classpath of the application with the
>> admin goal ?
>> Actually the application deployed with the admin goal cannot find the
>> library where the JPA classes are defined, if I find a way to specify
>> the lib directory in the classpath then it should work.
>> Any idea how to do that ?
>>
>> Any idea how long it will take the bugfix?
>>
>> Thanks,
>> Vasile
>>
>> ------------------------------------------------------------------------
>> *Von:* Bhavanishankar <bhavanishankara.sapaliga_at_oracle.com>
>> <mailto:bhavanishankara.sapaliga_at_oracle.com>
>> *An:* Mirea Vasile <mirea_vasile_at_yahoo.com>
>> <mailto:mirea_vasile_at_yahoo.com>
>> *Cc:* "users_at_embedded-glassfish.java.net"
>> <mailto:users_at_embedded-glassfish.java.net>
>> <users_at_embedded-glassfish.java.net>
>> <mailto:users_at_embedded-glassfish.java.net>;
>> "users_at_glassfish.java.net" <mailto:users_at_glassfish.java.net>
>> <users_at_glassfish.java.net> <mailto:users_at_glassfish.java.net>
>> *Gesendet:* 6:16 Donnerstag, 23.Februar 2012
>> *Betreff:* Re: Issue with maven-embedded-glassfish-plugin version
>> 3.1(3.1.1)
>>
>> Hi Vasile,
>>
>> Ok I will try to create a test case and log an issue. Will get back
>> to you if I could not reproduce the issue.
>>
>> Thanks,
>>
>> Bhavani
>>
>> On 02/22/2012 04:25 PM, Mirea Vasile wrote:
>>>
>>> Hi Bhavani,
>>>
>>> I tryed this solution to set the memory options for maven.
>>> It helps.
>>> Now I get on Widnows 7 and on linux the same error:
>>> org.springframework.ws.soap.client.SoapFaultClientException: org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.internal.ast.HqlToken [select count(*) from com.ws.web.persistence.jpa.DdClass where ipAddress = ?]
>>> at org.springframework.ws.soap.client.core.SoapFaultMessageResolver.resolveFault(SoapFaultMessageResolver.java:37)
>>> at org.springframework.ws.client.core.WebServiceTemplate.handleFault(WebServiceTemplate.java:774)
>>> at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:600)
>>> at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:537)
>>> at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:384)
>>> at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:378)
>>> at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:370)
>>> Seems the deployment doenst work corectly using the admin goal.
>>>
>>> Maybe you can create a issue for this problem too.
>>>
>>> A use-case will be:
>>> the deployed application is a spring ws application who is using
>>> JPA and Hibernate for persistence.
>>> The JPA classes are located in another jar file who is in the
>>> dependecies of the web service application and the file is found in
>>> the glassfish directory.
>>> Still the embedded-glassfish is not able to locate the JPA classes.
>>> The client of the web service is normally deployed with the
>>> embedded-glassfish(it is a Spring MVC web application).
>>>
>>> I cannot provide a sample project because I use database connections
>>> and to modify it, it takes to much time.
>>> Maybe this use-case helps you to make an idea and to fix the problem.
>>> I tryed with version 3.1 and with version 3.1.1 and I have the same
>>> problem.
>>>
>>>
>>> Regards,
>>> Vasile.
>>>
>>>
>>> ------------------------------------------------------------------------
>>> *Von:* Bhavanishankar <bhavanishankara.sapaliga_at_oracle.com>
>>> <mailto:bhavanishankara.sapaliga_at_oracle.com>
>>> *An:* Mirea Vasile <mirea_vasile_at_yahoo.com>
>>> <mailto:mirea_vasile_at_yahoo.com>
>>> *Cc:* "users_at_embedded-glassfish.java.net"
>>> <mailto:users_at_embedded-glassfish.java.net>
>>> <users_at_embedded-glassfish.java.net>
>>> <mailto:users_at_embedded-glassfish.java.net>;
>>> "users_at_glassfish.java.net" <mailto:users_at_glassfish.java.net>
>>> <users_at_glassfish.java.net> <mailto:users_at_glassfish.java.net>
>>> *Gesendet:* 18:21 Dienstag, 21.Februar 2012
>>> *Betreff:* Re: Issue with maven-embedded-glassfish-plugin version
>>> 3.1(3.1.1)
>>>
>>> Hi Vasile,
>>>
>>> You can try setting higher PermGen space using MAVEN_OPTS
>>> environment variable, something like:
>>>
>>> MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=256m"
>>>
>>> Thanks,
>>>
>>> Bhavani
>>>
>>> On 02/21/2012 10:32 PM, Mirea Vasile wrote:
>>>>
>>>>
>>>> Hi Bhavani,
>>>>
>>>> trying to run the same application under linux I get the following
>>>> issue :
>>>> 21.02.2012 17:44:01 org.glassfish.api.ActionReport failure
>>>> SCHWERWIEGEND: Exception while preparing the app
>>>> 21.02.2012 17:44:01 com.sun.enterprise.v3.server.ApplicationLifecycle deploy
>>>> SCHWERWIEGEND: PermGen space
>>>> java.lang.OutOfMemoryError: PermGen space
>>>> at org.hibernate.event.service.internal.EventListenerRegistryImpl.prepareListenerMap(EventListenerRegistryImpl.java:235)
>>>> at org.hibernate.event.service.internal.EventListenerRegistryImpl.<init>(EventListenerRegistryImpl.java:97)
>>>> at org.hibernate.event.service.internal.EventListenerServiceInitiator.initiateService(EventListenerServiceInitiator.java:51)
>>>> at org.hibernate.event.service.internal.EventListenerServiceInitiator.initiateService(EventListenerServiceInitiator.java:38)
>>>> at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:91)
>>>> at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:177)
>>>> at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:150)
>>>> at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)
>>>> at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyHibernateListeners(BeanValidationIntegrator.java:292)
>>>> at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:134)
>>>> at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:294)
>>>> at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1737)
>>>> at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:84)
>>>> at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:904)
>>>> at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:889)
>>>> at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73)
>>>> at org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:205)
>>>> at org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoader.java:119)
>>>> at org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:214)
>>>> at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:483)
>>>> at org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:221)
>>>> at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:167)
>>>> at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:872)
>>>> 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:382)
>>>> at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355)
>>>> at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)
>>>> at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1064)
>>>> at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96)
>>>> at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1244)
>>>> at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1232)
>>>> Build timed out. Aborting
>>>>
>>>> It seems the deploy command it generates some issues to glassfish under linux.
>>>> What should I do in this situation ?
>>>>
>>>> Thanks,
>>>> Vasile.
>>>>
>>>> ------------------------------------------------------------------------
>>>> *Von:* Bhavanishankar <bhavanishankara.sapaliga_at_oracle.com>
>>>> <mailto:bhavanishankara.sapaliga_at_oracle.com>
>>>> *An:* Mirea Vasile <mirea_vasile_at_yahoo.com>
>>>> <mailto:mirea_vasile_at_yahoo.com>
>>>> *Cc:* "users_at_embedded-glassfish.java.net"
>>>> <mailto:users_at_embedded-glassfish.java.net>
>>>> <users_at_embedded-glassfish.java.net>
>>>> <mailto:users_at_embedded-glassfish.java.net>;
>>>> "users_at_glassfish.java.net" <mailto:users_at_glassfish.java.net>
>>>> <users_at_glassfish.java.net> <mailto:users_at_glassfish.java.net>
>>>> *Gesendet:* 18:13 Montag, 20.Februar 2012
>>>> *Betreff:* Re: Issue with maven-embedded-glassfish-plugin version
>>>> 3.1(3.1.1)
>>>>
>>>> Hi Vasile,
>>>>
>>>> "\" characters getting replaced on Windows seems to be bug. Please
>>>> file a bug for it in issuetracker^[1]
>>>>
>>>> Since "glassfish.embedded.tmpdir" system property is the way of
>>>> specifying where the temp. domain dir should get created, what you
>>>> are seeing is the right behaviour.
>>>>
>>>> For the second application deployment, you should ideally file an
>>>> enhancement request in issuetracker^[1] . But as a workaround, you
>>>> can use admin goal^[2] of the plugin. For you reference, I have
>>>> attached pom.xml snippet which can do this.
>>>>
>>>> Thanks,
>>>>
>>>> Bhavani
>>>>
>>>> [1] http://java.net/jira/browse/GLASSFISH
>>>> [2]
>>>> http://embedded-glassfish.java.net/nonav/plugindocs/3.1/admin-mojo.html
>>>>
>>>>
>>>> On 02/20/2012 10:02 PM, Mirea Vasile wrote:
>>>>>
>>>>>
>>>>> Hi Bhavani,
>>>>>
>>>>> Thank you very much for the answer.
>>>>> Unfortunately is not working properly.
>>>>> The path ${project.build.directory}/glassfish is replaced with :
>>>>>
>>>>> T:\workspace2\slave-server-webui\target/glassfish
>>>>>
>>>>> Unfortunately the plugin replace all "\" and the path remains like:
>>>>> Set system property [glassfish.embedded.tmpdir =
>>>>> T:workspace2slave-server-webui
>>>>> arget/glassfish]
>>>>>
>>>>> Maybe you can correct this bug(my build runs on windows 7).
>>>>>
>>>>> I found a workaround in my case:
>>>>> I use target/glassfish and then the plugin use this path
>>>>> additional to the app path and then the plugin deploy glassfish under:
>>>>> T:\workspace2\slave-server-webui\target\glassfish\
>>>>> Then the glassfish directory will be:
>>>>>
>>>>>
>>>>> T:\workspace2\slave-server-webui\target\glassfish\gfembed8580213734252944528tmp
>>>>>
>>>>>
>>>>> Now my question is why this tmp directory is additionally generated ?
>>>>> My problem is I want to copy another application in the autodeploy
>>>>> directory of embedded glassfish.
>>>>> My integration tests for my application slave-server-webui are
>>>>> using another application ( a web service)
>>>>> I need to copy in the pre-integration pfase this additional web
>>>>> service application in the embedded glassfish otherwise my
>>>>> application slave-server-webui and his integration tests won't work.
>>>>>
>>>>> Maybe you can suggest me a better solution for my case.
>>>>> I describe my problem here :
>>>>> http://stackoverflow.com/questions/9280413/maven-embedded-glassfish-plugin-deploying-2-applications
>>>>>
>>>>> Unfortunattly I got no answer to my question, so my only idea was
>>>>> to copy in the autodeploy directory on the embedded glassfish my
>>>>> second application(the web service).
>>>>> Thanks for helping with using embeded glassfish plugin for maven.
>>>>>
>>>>> Regards,
>>>>> Vasile
>>>>> ------------------------------------------------------------------------
>>>>> *Von:* Bhavanishankar <bhavanishankara.sapaliga_at_oracle.com>
>>>>> <mailto:bhavanishankara.sapaliga_at_oracle.com>
>>>>> *An:* Mirea Vasile <mirea_vasile_at_yahoo.com>
>>>>> <mailto:mirea_vasile_at_yahoo.com>
>>>>> *Cc:* "users_at_glassfish.java.net" <mailto:users_at_glassfish.java.net>
>>>>> <users_at_glassfish.java.net> <mailto:users_at_glassfish.java.net>;
>>>>> "users_at_embedded-glassfish.java.net"
>>>>> <mailto:users_at_embedded-glassfish.java.net>
>>>>> <users_at_embedded-glassfish.java.net>
>>>>> <mailto:users_at_embedded-glassfish.java.net>
>>>>> *Gesendet:* 7:25 Montag, 20.Februar 2012
>>>>> *Betreff:* Re: Issue with maven-embedded-glassfish-plugin version
>>>>> 3.1(3.1.1)
>>>>>
>>>>> Hi,
>>>>>
>>>>> With 3.1 (onwards) you should set the instanceRoot iff you have
>>>>> pre-created domain directory.
>>>>>
>>>>> Otherwise, if you intend to make the embedded GlassFish use a
>>>>> different temp. directory for its tiny instance root creation,
>>>>> then you should set this in embedded plugin configuration:
>>>>>
>>>>> <configuration>
>>>>> ...
>>>>>
>>>>> <systemProperties>
>>>>>
>>>>> <property>glassfish.embedded.tmpdir=${project.build.directory}/glassfish</property>
>>>>>
>>>>> </systemProperties>
>>>>>
>>>>> ...
>>>>> </configuration>
>>>>>
>>>>> HTH,
>>>>>
>>>>> Bhavani
>>>>>
>>>>> On 02/15/2012 04:04 PM, Mirea Vasile wrote:
>>>>>>
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I have the following issue:
>>>>>>
>>>>>> I am using the maven-embedded-glassfish-plugin .
>>>>>> I am having the following configuration in maven for it:
>>>>>>
>>>>>> <plugin>
>>>>>> <groupId>org.glassfish</groupId>
>>>>>> <artifactId>maven-embedded-glassfish-plugin</artifactId>
>>>>>> <version>3.0</version>
>>>>>>
>>>>>> <configuration>
>>>>>> <goalPrefix>embedded-glassfish</goalPrefix>
>>>>>> <serverID>localhost</serverID>
>>>>>> <name>${build.finalName}</name>
>>>>>> <app>${project.build.directory}/${build.finalName}.war</app>
>>>>>> <port>8080</port>
>>>>>>
>>>>>> <instanceRoot>${project.build.directory}/glassfish</instanceRoot>
>>>>>>
>>>>>> <autoDelete>true</autoDelete>
>>>>>>
>>>>>> </configuration>
>>>>>>
>>>>>> <executions>
>>>>>> <execution>
>>>>>> <id>start-glassfish</id>
>>>>>> <phase>pre-integration-test</phase>
>>>>>> <goals>
>>>>>> <goal>start</goal>
>>>>>> </goals>
>>>>>> </execution>
>>>>>> <execution>
>>>>>> <id>glassfish-deploy</id>
>>>>>> <phase>pre-integration-test</phase>
>>>>>> <goals>
>>>>>> <goal>deploy</goal>
>>>>>> </goals>
>>>>>> </execution>
>>>>>> <execution>
>>>>>> <id>glassfish-undeploy</id>
>>>>>> <phase>post-integration-test</phase>
>>>>>> <goals>
>>>>>> <goal>undeploy</goal>
>>>>>> </goals>
>>>>>> </execution>
>>>>>> <execution>
>>>>>> <id>stop-glassfish</id>
>>>>>> <phase>post-integration-test</phase>
>>>>>> <goals>
>>>>>> <goal>stop</goal>
>>>>>> </goals>
>>>>>> </execution>
>>>>>> </executions>
>>>>>> </plugin>
>>>>>>
>>>>>> This configuration works just fine in the version 3.0.
>>>>>> Important is the option: <instanceRoot>
>>>>>>
>>>>>> In the Version 3.1 I am getting a strange error:
>>>>>> 15.02.2012 11:30:48
>>>>>> com.sun.enterprise.v3.server.DomainXmlPersistence getPidFile
>>>>>>
>>>>>> ERROR: Cannot obtain lockfile location T:\workspace2\web-app\
>>>>>> target\glassfish\config\lockfile, configuration changes will not
>>>>>> be persisted
>>>>>> java.io.IOException: The System cannot find the specied path.
>>>>>> at java.io.WinNTFileSystem.createFileExclusively(Native
>>>>>> Method)
>>>>>> at java.io.File.createNewFile(File.java:883)
>>>>>> at
>>>>>> com.sun.enterprise.v3.server.DomainXmlPersistence.getPidFile(DomainXm
>>>>>> lPersistence.java:92)
>>>>>> at
>>>>>> com.sun.enterprise.v3.server.DomainXmlPersistence.accessRead(DomainXm
>>>>>> lPersistence.java:114)
>>>>>> at
>>>>>> org.glassfish.config.support.DomainXml.parseDomainXml(DomainXml.java:
>>>>>> 210)
>>>>>> ...
>>>>>>
>>>>>> In the version 3.0 the directory structure will be created by the
>>>>>> plugin, in the version 3.1 not any more and then I get this errors.
>>>>>> Something change in the new version or it is a bug ?
>>>>>>
>>>>>>
>>>>>> Thanks,
>>>>>> Vasile.
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>