Deploy AW application to GlassFish release-level production server

73 views
Skip to first unread message

Morton

unread,
Jan 30, 2010, 2:25:32 PM1/30/10
to AribaWeb (aribaweb.org)
In brief, I'd like to deploy my AW application to a production
GlassFish server. Has anyone had any luck deploying to GlassFish (on a
Linux box)?

Any and all feedback welcome!


Details:
I'd like to deploy my AW application to a production release of the
GlassFish server. Preferably, GlassFish v3[.0.1]; GlassFish v2[.1.1]
should also be fine.

I have been able to consistently deploy to an older promoted build of
GF v3 (b65 is OK; b66 started consistently giving me problems with
EclipseLink -- it looks like GF (via EclipseLink) is not passing my
JDBC Connection/Pool configuration -- null values for un, pw, etc is
the exception).

More recently, I was hopeful with the recent GF v3 prod release. But
alas, no dice. I've spent the last three days beating on my
configuration and test server, trying different approaches, including
upgrading my test server's JDK (1.6.0.18), and trying GF v2.1.1 (where
I am consistently getting a "java.lang.NoSuchMethodError:
org.objectweb.asm.ClassReader.accept(Lorg/objectweb/asm/ClassVisitor;Z)
V" exception).

Some details of my configuration:
Development:
AW 5.0 GA Preview 3
Eclipse 3.5.1 (with a recompiled AW plugin!)
Sun JDK 1.6.0_b18
WinXP32

[Test] Server (not working):
Ubuntu Server 8.10, fully patched
MySQL 5.1.41 (via dotdeb)
Sun JDK 1.6.0_b18 (<--- GlassFish states 1.6.0_b17+ required)
GlassFish v3.0.1 -OR- GlassFish v2.1.1 (latest/patched; default
install/config for both)

[Test] Server (working):
Ubuntu Server 8.10, fully patched
MySQL 5.1.41 (via dotdeb)
Sun JDK 1.6.0_b14
GlassFish v3 Preview (b65)


***

Regards,
-Morton

Kingsley

unread,
Jan 30, 2010, 3:56:28 PM1/30/10
to AribaWeb (aribaweb.org)
Hi Morton,

Can you send out the complete stack trace?
My suspicion is that GlassFish or some other module is dependent on a
newer version of objectweb.asm, but it is picking AW's version ASM.

AW is using version 2.2.3 of ASM, and I checked that the accept()
method is not present.
You can try removing asm.jar from your AW app's webapp directory, and
see if it helps.

Thanks,
Kingsley

Morton

unread,
Feb 1, 2010, 12:12:53 AM2/1/10
to AribaWeb (aribaweb.org)
Kingsley,

Thanks for your quick reply!

I did try (and just rechecked) removing the asm.jar from the webapp
directory (...\[app]\WEB-INF\lib), but no had no success.

(At one point I also tried including the latest ASM jars (v3.2) in the
lib directory, but I can guess that implementing new versions would
take a lot more than just dropping them in. Like updating the calls
within the AW framework.)

There are actually two different back-to-back stack entries in my
GlassFish v2.1.1 log. (And of note, these two entries are the same,
regardless of the inclusion (or absence) of asm.jar -- the same errors
appear regardless of the presence of asm.jar.)

Of note, I'd actually rather use the more recent GlassFish 3.0[.1]. I
also include the GF 3 EclipseLink-related stack trace log entry after
the GF 2.1.1 entries.

An observation related to GF 3: Seems to be some communication problem
(s) between Hibernate (AW's version?) and EclipseLink (2.0) within GF
3, and probably something to due with the newish version of
EclipseLink GF 3 has implemented -- GF 3 was working with EclipseLink
until September 2009. I just did some poking around (Google
"eclipselink glassfish b65"), and found some related sounding chatter
elsewhere, also complaining that GF 3's inclusion of the new
EclipseLink 2.0 around that time broke Compass code. Here is a link to
some Compass discussion (which AW also uses!) with their main guy
which may (or may not) be helpful to you:
http://forum.compass-project.org/thread.jspa?threadID=216371&tstart=-2

Anyway, here is the first log entry / stack trace (GF 2.1.1):

Log Entry Detail

Timestamp

Jan 31, 2010 22:06:45.582
Log Level

SEVERE
Logger

javax.enterprise.system.container.web
Name-Value Pairs

_ThreadID=15;_ThreadName=httpSSLWorkerThread-8080-1;_RequestID=b21419bd-
ef5d-45c3-b5a4-efe6185cb63c;
Record Number

376
Message ID

WebModule[/gip]StandardWrapper.Throwable java.lang.NoSuchMethodError
Complete Message

org.objectweb.asm.ClassReader.accept(Lorg/objectweb/asm/ClassVisitor;Z)
V at ariba.ui.aribaweb.util.AWJarWalker.visitBytecode(AWJarWalker.java:
714) at ariba.ui.aribaweb.util.AWJarWalker.processBytecode
(AWJarWalker.java:666) at
ariba.ui.aribaweb.util.AWClasspathResourceDirectory.initJar
(AWClasspathResourceDirectory.java:445) at
ariba.ui.aribaweb.util.AWClasspathResourceDirectory.autoRegisterJarResources
(AWClasspathResourceDirectory.java:320) at
ariba.ui.aribaweb.core.AWConcreteServerApplication.registerResourceDirectories
(AWConcreteServerApplication.java:346) at
ariba.ui.aribaweb.core.AWConcreteServerApplication.init
(AWConcreteServerApplication.java:131) at
ariba.ui.aribaweb.core.AWConcreteApplication.init
(AWConcreteApplication.java:293) at
ariba.ui.servletadaptor.AWServletApplication.init
(AWServletApplication.java:91) at app.Application.init
(Application.java:28) at
ariba.ui.aribaweb.core.AWConcreteApplication.createApplication
(AWConcreteApplication.java:161) at
ariba.ui.servletadaptor.AWDispatcherServlet.createApplication
(AWDispatcherServlet.java:66) at
ariba.ui.servletadaptor.AWDispatcherServlet.init
(AWDispatcherServlet.java:54) at
org.apache.catalina.core.StandardWrapper.loadServlet
(StandardWrapper.java:1100) at
org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:
848) at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:222) at
org.apache.catalina.core.StandardContextValve.invokeInternal
(StandardContextValve.java:287) at
org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:218) at
org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:648) at
org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:593) at
com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94) at
com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke
(PESessionLockingStandardPipeline.java:98) at
org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:222) at
org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:648) at
org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:593) at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
587) at org.apache.catalina.core.ContainerBase.invoke
(ContainerBase.java:1093) at
org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:166) at
org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:648) at
org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:593) at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
587) at org.apache.catalina.core.ContainerBase.invoke
(ContainerBase.java:1093) at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:
291) at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter
(DefaultProcessorTask.java:666) at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess
(DefaultProcessorTask.java:597) at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process
(DefaultProcessorTask.java:872) at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask
(DefaultReadTask.java:341) at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask
(DefaultReadTask.java:263) at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask
(DefaultReadTask.java:214) at
com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask
(PortUnificationPipeline.java:382) at
com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:
264) at
com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run
(SSLWorkerThread.java:106)


And the second log entry / stack trace (GF v2.1.1):

Log Entry Detail

Timestamp

Jan 31, 2010 22:06:45.582
Log Level

SEVERE
Logger

javax.enterprise.system.container.web
Name-Value Pairs

_ThreadID=15;_ThreadName=httpSSLWorkerThread-8080-1;_RequestID=b21419bd-
ef5d-45c3-b5a4-efe6185cb63c;
Record Number

377
Message ID

StandardWrapperValve[gip]
Complete Message

PWC1382: Allocate exception for servlet gip
java.lang.NoSuchMethodError: org.objectweb.asm.ClassReader.accept(Lorg/
objectweb/asm/ClassVisitor;Z)V at
ariba.ui.aribaweb.util.AWJarWalker.visitBytecode(AWJarWalker.java:714)
at ariba.ui.aribaweb.util.AWJarWalker.processBytecode(AWJarWalker.java:
666) at ariba.ui.aribaweb.util.AWClasspathResourceDirectory.initJar
(AWClasspathResourceDirectory.java:445) at
ariba.ui.aribaweb.util.AWClasspathResourceDirectory.autoRegisterJarResources
(AWClasspathResourceDirectory.java:320) at
ariba.ui.aribaweb.core.AWConcreteServerApplication.registerResourceDirectories
(AWConcreteServerApplication.java:346) at
ariba.ui.aribaweb.core.AWConcreteServerApplication.init
(AWConcreteServerApplication.java:131) at
ariba.ui.aribaweb.core.AWConcreteApplication.init
(AWConcreteApplication.java:293) at
ariba.ui.servletadaptor.AWServletApplication.init
(AWServletApplication.java:91) at app.Application.init
(Application.java:28) at
ariba.ui.aribaweb.core.AWConcreteApplication.createApplication
(AWConcreteApplication.java:161) at
ariba.ui.servletadaptor.AWDispatcherServlet.createApplication
(AWDispatcherServlet.java:66) at
ariba.ui.servletadaptor.AWDispatcherServlet.init
(AWDispatcherServlet.java:54) at
org.apache.catalina.core.StandardWrapper.loadServlet
(StandardWrapper.java:1100) at
org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:
848) at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:222) at
org.apache.catalina.core.StandardContextValve.invokeInternal
(StandardContextValve.java:287) at
org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:218) at
org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:648) at
org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:593) at
com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94) at
com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke
(PESessionLockingStandardPipeline.java:98) at
org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:222) at
org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:648) at
org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:593) at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
587) at org.apache.catalina.core.ContainerBase.invoke
(ContainerBase.java:1093) at
org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:166) at
org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:648) at
org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:593) at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
587) at org.apache.catalina.core.ContainerBase.invoke
(ContainerBase.java:1093) at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:
291) at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter
(DefaultProcessorTask.java:666) at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess
(DefaultProcessorTask.java:597) at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process
(DefaultProcessorTask.java:872) at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask
(DefaultReadTask.java:341) at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask
(DefaultReadTask.java:263) at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask
(DefaultReadTask.java:214) at
com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask
(PortUnificationPipeline.java:382) at
com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:
264) at
com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run
(SSLWorkerThread.java:106)

***

Here is the GlassFish 3.0.1 exception stack trace:

Log Entry Detail

Timestamp

Jan 30, 2010 11:04:05.405
Log Level

INFO
Logger

javax.enterprise.system.std.com.sun.enterprise.v3.services.impl
Name-Value Pairs

{_ThreadName=Thread-1, _ThreadID=31}
Record Number

516
Message ID

[EL Severe]
Complete Message

2010-01-30 11:04:05.401--ServerSession(660571072)--Local Exception
Stack: Exception [EclipseLink-4021] (Eclipse Persistence Services -
2.0.0.v20091127-r5931):
org.eclipse.persistence.exceptions.DatabaseException Exception
Description: Unable to acquire a connection from driver [null], user
[null] and URL [null]. Verify that you have set the expected driver
class and URL. Check your login, persistence.xml or sessions.xml
resource. The jdbc.driver property should be set to a class that is
compatible with your database platform at
org.eclipse.persistence.exceptions.DatabaseException.unableToAcquireConnectionFromDriverException
(DatabaseException.java:376) at
org.eclipse.persistence.sessions.DefaultConnector.connect
(DefaultConnector.java:91) at
org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource
(DatasourceLogin.java:162) at
org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource
(DatabaseSessionImpl.java:584) at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login
(EntityManagerFactoryProvider.java:228) at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy
(EntityManagerSetupImpl.java:368) at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession
(EntityManagerFactoryImpl.java:151) at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl
(EntityManagerFactoryImpl.java:207) at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager
(EntityManagerFactoryImpl.java:195) at
ariba.ui.meta.jpa.HibernateContext.createEntityManager
(HibernateContext.java:94) at ariba.ui.meta.jpa.HibernateContext
$Provider.create(HibernateContext.java:48) at
ariba.ui.meta.persistence.ObjectContext.createContext
(ObjectContext.java:204) at
ariba.ui.meta.persistence.ObjectContext.bindNewContext
(ObjectContext.java:185) at
ariba.ui.meta.persistence.ObjectContext.bindNewContext
(ObjectContext.java:192) at
ariba.appcore.Initialization.checkDataInitLoaders(Initialization.java:
135) at ariba.appcore.Initialization$1.applicationDidInit
(Initialization.java:84) at
ariba.ui.aribaweb.core.AWConcreteApplication.createApplication
(AWConcreteApplication.java:166) at
ariba.ui.servletadaptor.AWDispatcherServlet.createApplication
(AWDispatcherServlet.java:66) at
ariba.ui.servletadaptor.AWDispatcherServlet.init
(AWDispatcherServlet.java:54) at
org.apache.catalina.core.StandardWrapper.initServlet
(StandardWrapper.java:1428) at
org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:
1060) at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:187) at
org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:188) at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
641) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke
(PESessionLockingStandardPipeline.java:85) at
org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:185) at
org.apache.catalina.connector.CoyoteAdapter.doService
(CoyoteAdapter.java:332) at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
233) at com.sun.enterprise.v3.services.impl.ContainerMapper.service
(ContainerMapper.java:165) at
com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:
791) at com.sun.grizzly.http.ProcessorTask.doProcess
(ProcessorTask.java:693) at com.sun.grizzly.http.ProcessorTask.process
(ProcessorTask.java:954) at
com.sun.grizzly.http.DefaultProtocolFilter.execute
(DefaultProtocolFilter.java:170) at
com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter
(DefaultProtocolChain.java:135) at
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:
102) at com.sun.grizzly.DefaultProtocolChain.execute
(DefaultProtocolChain.java:88) at
com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:
76) at com.sun.grizzly.ProtocolChainContextTask.doCall
(ProtocolChainContextTask.java:53) at
com.sun.grizzly.SelectionKeyContextTask.call
(SelectionKeyContextTask.java:57) at com.sun.grizzly.ContextTask.run
(ContextTask.java:69) at com.sun.grizzly.util.AbstractThreadPool
$Worker.doWork(AbstractThreadPool.java:330) at
com.sun.grizzly.util.AbstractThreadPool$Worker.run
(AbstractThreadPool.java:309) at java.lang.Thread.run(Thread.java:619)

***

Thanks in advance
-Morton

Kingsley Ngan

unread,
Feb 1, 2010, 1:54:50 PM2/1/10
to arib...@googlegroups.com
You can use application specific class loading in Glassfish, and this might solve the issue on both versions.

You can download the v3 doc here:
http://docs.sun.com/app/docs/prod/gf.entsvr.v3?l=en&a=view

Page 36 of the Application Development Guide talks about this.  I also attached it.

I found the doc via this blog post:

Let us know what you find.

Thanks,
Kingsley


--
You received this message because you are subscribed to the Google Groups "AribaWeb (aribaweb.org)" group.
To post to this group, send email to arib...@googlegroups.com.
To unsubscribe from this group, send email to aribaweb+u...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/aribaweb?hl=en.


820-7695.pdf

Morton

unread,
Feb 1, 2010, 8:24:08 PM2/1/10
to AribaWeb (aribaweb.org)
Kingsley,

In brief, no luck.

However, I am not positive that I tried the recommended approach 100%
correctly. (And I am guessing that there is no "close" here.)

Could you offer some more specific recommendations? (What jars would
need to load earlier, etc. Or even what jars to put where. I did try a
number of combinations, please see below.)

My understanding:
Based on the reading, two basic approaches may be used for class
loading precedence on GlassFish. First, during Application Deployment,
specific Libraries may be specified. Second, the libraries (jars) may
be placed in specific locations (like {domain_root}/lib/ext (loads
second, just after Bootstrap, or {domain_root}/lib for global (loads
fourth); see p34 of the pdf you sent me).

Like I said above, I am not sure I took the right approach. I am still
pretty new to the whole Java web server environment, and I am
primarily a developer. That said, I am willing to roll up my sleeves
and try some troubleshooting -- and hopefully learn a few things along
the way.

Here's what I tried (both GF 2.1.1 and 3.0.1) -- I received the same
stack trace errors as stated previously:
* I specified several different sets of jars in the Libraries section
during Application Deployment (and I put the jars in {domain_root}/lib/
applibs). Some example sets: {asm.jar}; {full set of jars, less the
application's jar}
* I moved the asm.jar into the {domain_root}/lib/ext} directory
* I put all jars (short of the application's jar) into the
{domain_root}/lib/ext} directory. Of note here, I did get a different
error here -- unable to start an instance of HTTP Servlet. Looks like
at least the base AW jars need to be in the application's WEB-INF\lib
directory

Any additional comments or pointers welcome!
Thanks,
-Morton

On Feb 1, 12:54 pm, Kingsley Ngan <kingsley.n...@gmail.com> wrote:
> You can use application specific class loading in Glassfish, and this might
> solve the issue on both versions.
>
> You can download the v3 doc here:http://docs.sun.com/app/docs/prod/gf.entsvr.v3?l=en&a=view
>
> Page 36 of the Application Development Guide talks about this.  I also
> attached it.
>

> I found the doc via this blog post:http://blogs.sun.com/sivakumart/entry/classloaders_in_glassfish_an_at...


>
> Let us know what you find.
>
> Thanks,
> Kingsley
>

> ...
>
> read more »
>
>  820-7695.pdf
> 2673KViewDownload

Kingsley Ngan

unread,
Feb 2, 2010, 7:47:12 PM2/2/10
to arib...@googlegroups.com
Actually, the problem on GlassFish v3 is that it is using EclipseLink as the default JPA provider. AW uses Hibernate as the JPA provider.

You can install Hibernate for GlassFish using the Update Tool or from the GlassFish Web admin console.



I attached overview.txt.  Can you give that a try?

Thanks,
Kingsley


--
overview.txt

Morton

unread,
Feb 3, 2010, 5:00:39 PM2/3/10
to AribaWeb (aribaweb.org)
Kingsley,

I followed the various instructions available to set up Hibernate as
the JPA provider, but I am still receiving the same EclipseLink error.

It looks like GlassFish is not seeing my persistence.xml. (I believe
the correct location is in the deployed application's META-INF folder
(?).)

I believe you are on to the cause of the issue here -- we need to get
GlassFish to use Hibernate.

I followed the steps:
* Used the Admin Console (via browser) to install Hibernate (via
Update Tool :: Available Add-ons :: Hibernate :: [Install])
* Restarted GlassFish.
* In my deployed application's META-INF folder, I created
persistence.xml:
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
version="1.0" >
<persistence-unit name ="pu1">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<!-- JNDI name of the database resource to use -->
<jta-data-source>[my JNDI name: "jdbc/. . ."]</jta-data-
source>
<properties>
<!-- The database dialect to use -->
<property name="hibernate.dialect"
value="org.hibernate.dialect.MySQLDialect"/>
</properties>
</persistence-unit>
</persistence>
* I restarted my deployed application in GlassFish: still the
EclipseLink error
* Tweaked persistence.xml (tried adding various properties, same
error)
* Restarted GF; also server: same error

I verified that the needed (7) Hibernate .jars are in the GF\lib
folder.


Would you have any additional advice?

(I will continue to look into getting GF to use Hibernate as the JPA
provider.)

Thank you!
-Morton

On Feb 2, 6:47 pm, Kingsley Ngan <kingsley.n...@gmail.com> wrote:
> Actually, the problem on GlassFish v3 is that it is using EclipseLink as the
> default JPA provider. AW uses Hibernate as the JPA provider.
>
> You can install Hibernate for GlassFish using the Update Tool or from the
> GlassFish Web admin console.
>

> http://blogs.sun.com/GlassFishPersistence/entry/using_hibernate_as_jp...


>
> "Description: Hibernate JPA provider for GlassFish Application Server
> instance. After this module is successfully installed you can use Hibernate
> as a persistence provider for your JPA applications. For more information
> read hibernate/overview.txt."
>
> I attached overview.txt.  Can you give that a try?
>
> Thanks,
> Kingsley
>

> ...
>
> read more »
>
>  overview.txt
> 4KViewDownload

Kingsley Ngan

unread,
Feb 3, 2010, 6:07:02 PM2/3/10
to arib...@googlegroups.com
Hi Morton,

You should not need to create a persistence.xml under META-INF in the application folder.
There is already one zipped in the application jar.  For example, the one for the MasterDetail app would be in this file:

webapps\MasterDetail\WEB-INF\lib\app.MasterDetail.jar

Can you try to modify the provider element in this persistence.xml instead?

Thanks,
Kingsley


--

Morton

unread,
Feb 3, 2010, 6:10:46 PM2/3/10
to AribaWeb (aribaweb.org)
Kingsley,

I just had a breakthrough of sorts! While I wouldn't call it quite a
"full win," it does show that GlassFish v3.0.1 will work.

After reading the section "EclipseLink Library Location" in:
http://wiki.eclipse.org/EclipseLink/Examples/JPA/GlassFishV3_Web_Tutorial
I stopped GlassFish, moved (7) persistence-related jars to a temp
folder outside of the /modules directory, restarted GlassFish, and my
application loads -- no EclipseLink errors! Here are the EclipseLink /
persistence jars that I moved (all in {glassfish}/glassfish/modules/):
org.eclipse.persistence.antlr.jar
org.eclipse.persistence.jpa.jar
org.eclipse.persistence.asm.jar
org.eclipse.persistence.core.jar

(Note: The other two org.eclipse.persistence jars
(org.eclipse.persistence.jpa.modelgen.jar and
org.eclipse.persistence.oracle.jar) can also be moved and my
application will work.)

A couple thoughts:
* If no persistence provider is specified, will GlassFish will
choke? (I wonder if any internal GF apps or processes use
EclipseLink . . .)
* What will happen during a GlassFish update? (Choke?)

In any event, I'm guessing there is a better method than hiding/
removing the EclipseLink jars, and it is likely related to
persistence.xml. (Please read my previous post.)

Additional ideas welcome!

Thanks in advance,
-Morton

> ...
>
> read more »

Morton

unread,
Feb 3, 2010, 6:14:26 PM2/3/10
to AribaWeb (aribaweb.org)
Quick addendum per the above (remove EclipseLink jars), I removed my
application's META-INF/persistence.xml, restarted GlassFish, and my
application worked just fine. (Looks like GlassFish is not respecting
my persistence.xml. Is this all a loading sequence issue?)

-Morton

On Feb 3, 5:10 pm, Morton <morton.th...@gmail.com> wrote:
> Kingsley,
>

> I just had a breakthrough of sorts! While I wouldn't call it quite a
> "full win," it does show that GlassFish v3.0.1 will work.
>
> After reading the section "EclipseLink Library Location" in:

>  http://wiki.eclipse.org/EclipseLink/Examples/JPA/GlassFishV3_Web_Tuto...

> ...
>
> read more »

Morton

unread,
Feb 3, 2010, 7:58:59 PM2/3/10
to AribaWeb (aribaweb.org)
Another addendum: I just removed the (7) Hibernate jars that I
installed via GF Add-ons, and my application worked fine. (I guessed
that since the Hibernate jars are bundled with the built war, we
didn't need to install separately in GF.)

Still, this issue should be solved via (GlassFish) configuration -- we
need to be able to specify to GlassFish that we want to override their
default JPA provider (EclipseLink).

Thanks,
-Morton

> ...
>
> read more »

Morton

unread,
Feb 15, 2010, 12:48:53 PM2/15/10
to AribaWeb (aribaweb.org)
Any other ideas on making AW work on GlassFish v3.0+, short of
removing the EclipseLink jars from the GlassFish install?

Thanks!
-Morton

> ...
>
> read more »

Alexey-S

unread,
Mar 4, 2010, 3:40:05 PM3/4/10
to AribaWeb (aribaweb.org)
Patch for modify version ASM.

Index: src/aribaweb/ariba/ui/aribaweb/util/AWJarWalker.java
===================================================================
--- src/aribaweb/ariba/ui/aribaweb/util/AWJarWalker.java (revision 26)
+++ src/aribaweb/ariba/ui/aribaweb/util/AWJarWalker.java (working
copy)
@@ -711,7 +711,7 @@
try {
InputStream is = iter.getInputStream();
ClassReader cr = new ClassReader(is);
- cr.accept(visitor, false);
+ cr.accept(visitor, ClassReader.SKIP_DEBUG);
} catch (IOException e) {
// skip?

Morton

unread,
Mar 7, 2010, 12:29:05 PM3/7/10
to AribaWeb (aribaweb.org)
@Alexey-S:

Do you know, does the ASM fix allow GF 3[.0.1 b74.2] to run AW
applications without further configuration?

Thanks,
-Morton

Alexey-S

unread,
Mar 7, 2010, 4:31:37 PM3/7/10
to AribaWeb (aribaweb.org)
I'm trying to collect AW for OSGi. A nightmare.
In Apache ServiceMix 4.2 using an older version of ASM.
A lot of static variables. Because of this does not work restart the
war OSGi bundle.
I had to rewrite the entire system logging. Threw the pieces of change
in the level of logging,
threw system formatting and adapters.
Download csv file goes through the file system, instead of resources.
Logging system looks for files encoded in en_US, ignoring regional
server configuration.
For type code:
ClassUtil.classTouch (AWBaseResponse.class.getName ());
---> ClassObj = Class.forName (className);
I want to say a special thank you.
For OSGi design Class.forName does not always work correctly.
In place of this should be written as:
classObj = Thread.currentThread (). getContextClassLoader ().
loadClass (className);

Method servletUrlPrefix in the object AWServletApplication. Is a
masterpiece.
Reject the application name and instead puts the name of the servlet.
The presence of static parameters indicates that you can not do in the
annex more than one servlet.

Morton

unread,
Mar 8, 2010, 11:10:47 PM3/8/10
to AribaWeb (aribaweb.org)
@Alexey-S,
Interesting stuff on making AW OSGi compliant. I'm sure the AW folks
would be very interested in your findings.

Also on the static names in the system logging. (AW should be VERY
interested.) Your mention of AW's good handling of alternative
approach for Class.forName() is good to hear.

Now, the part about static parameters and the servletUrlPrefix
allowing only one AW servlet to run in a single servlet container is
troubling -- I have not yet tried running multiple apps at the same
time on the same servlet container. If this is the case, AW should
address this issue. (If so, please report it as a bug!)


However, do you have any thoughts on GlassFish v3 and the ASM fix --
will it allow AW to run (without removing the EclipseLink libs)?

Thank you,
-Morton

Alexey-S

unread,
Mar 9, 2010, 2:40:45 AM3/9/10
to AribaWeb (aribaweb.org)
GlassFish v3 is built on technology OSGi. You can install the ASM
bundle of Apache ServiceMix 4 (FUSE 4) -
org.apache.servicemix.bundles.asm-2.2.3_3.jar.

So you want to use JPA, you can not see the realization mataui-jpa?
There used Hibernate Session. Can come up with an alternative to this
masterpiece, using the technology OSGi service or Spring framework.

I would like to see the implementation of JDO. This technology works
with LDAP in the same way as with a relational database.

Morton

unread,
Mar 10, 2010, 1:14:46 AM3/10/10
to AribaWeb (aribaweb.org)
Alexey-S,

I am using JPA via AW's metaui-jpa.

Let me rephrase my earlier note: My AW app will not work on more
recent releases of GlassFish (GF) 3 (b66 - b74.2) -- without some
tinkering to the GF install. I have to remove the (7) EclipseLink jars
in the GF install, then AW metaui-jpa works fine.

Do the more recent versions of ASM fix the above? (So I don't have to
remove GF's EclipseLink jars?)

Thanks,
-Morton

Alexey-S

unread,
Mar 10, 2010, 8:59:29 AM3/10/10
to AribaWeb (aribaweb.org)
Morton,
Your project is designed as an OSGi bundle?
The file manifest.mf can specify the dependence on a specific OSGi
bundle - Hibernate.
In this case, the OSGi Framework must not raise the EclipseLink.

You can make me change for the proposed ASM. See for yourself if right
solution for you. I tried to compile a project for asm 3.2. The
project worked.

I tried to run GlassFish 3.0. GlassFish 3.0 - a tractor. ServiceMix
4.2 - a racing car. The platform they have one - Apache Felix.
In the version of GlassFish I did not find EclipseLink.

Morton

unread,
Mar 11, 2010, 7:25:06 PM3/11/10
to AribaWeb (aribaweb.org)
Alexey-S,

No, my project is a basic Java web application (.war) + persistence
(MySQL).

I am less interested in GlassFish as an OSGI server, more in its
capabilities as a good, compliant, open-source servlet container /
application server.

ServiceMix looks interesting, but we really aren't looking to do SOA
or a service bus -- at this time.

EclipseLink is the standard JPA provider for GlassFish. The jars
should be in {GlassFish_Root}\modules. They
are:org.eclipse.persistence.antlr.jar
org.eclipse.persistence.asm.jar
org.eclipse.persistence.core.jar
org.eclipse.persistence.jpa.jar

Regarding the Hibernate requirement, do you know, what would be the
key-value pair(s) to include in manifest.mf to specify Hibernate? (My
understanding was that the persistence.xml would specify the Hibernate
requirement, but all of my experimenting with persistence.xml yielded
no results -- see the previous posts in this thread for more on this.)

Thank you,
-Morton

Reply all
Reply to author
Forward
0 new messages