Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] Help with static weaving on OC4J seeing ._toplink_setmyColumn

Thanks for replying.

Tried #1. When I do it that way I get the classloader error when
spring tries to init the PU.

#2, I imagine the same thing would happen. When OC4J predeploys using
EL and then spring tries to use EL I'll get the same classloader
error.

#3) I'm already doing this, but when I set the provider to EL i get
the classloading issues, when I don't I get the original error about
oc4j trying to call _toplink weaver methods instead of the
_persistence weaver methods.

#4) I'm all for this, I would prefer to leave OC4J out of the picture.
But again, I put eclipselink in my web-inf/lib and then try to deploy
and have the same issues with the _toplink weaver methods trying to be
called if I don't define the persistence provider and the classloader
errors in oc4j when spring tries to fire up an entity manager.

Could you elaborate on #4? How would I completely keep OC4J out of
this and just let spring handle the persistence? Or does that not make
sense? It seems like OC4J is just detecting my persistence.xml and
then going to town no matter what I do.

Thanks for attempting to help :)

./tch



On Thu, Jul 8, 2010 at 11:05 AM, Michael O'Brien
<michael.obrien@xxxxxxxxxx> wrote:
> Tim,
>     Sorry to hear about all your OC4J difficulties.  There may be 3 and 1/2
> hacked scenarios you could be interested in to cover off questionable
> solutions if you need to use OC4J.
>     1) replace toplink.jar references in the TLE library definition with
> eclipselink.jar - tricking the default provider into being EclipseLink
> http://wiki.eclipse.org/EclipseLink/Examples/JPA/OC4J_Web_Tutorial#Option_2:_Modify_an_existing_shared-library_-_not_recommended
>
>     2) actually rename the eclipselik.jar to toplink.jar and throwing out
> toplink essentials
>     3) use static weaving at design time and repackage your ear with the
> statically weaved .class files
>     4) use an application managed entityManager and deploy eclipselink.jar
> (and most likely a version of the javax.persistence jar) with your EAR in
> the APP-INF/lib
>        - however I don't expect injected container managed persistence units
> to function correctly and/or dynamic weaving will be broken = a half
> solution
>
>     thank you
>     /michael
>     www.eclipselink.org
>
>
> Tim Hollosy wrote:
>
> Still banging my head on this, I might just have to see about dumping
> OC4J, because it's just getting ridiculous.
>
> Final symptoms:
> If i define eclipselink as my persistence provider, oc4j predeploys
> the persistence unit and then when Spring tries to initialize it, the
> classloader for my app is already closed.
>
> If I don't tell oc4j my persistence provider in persistence.xml then
> it uses toplink essentials in the background, even though spring is
> using the eclipselink adapater. This seems to completely not matter at
> all until I try to access a statically weaved method which must at
> that point hand off stuff to the container, because the container now
> wants to call the toplink weaved getters and setters.
>
> Can anyone think of a work around here, or post a working config set
> for a oc4j/spring/eclipselink project. I mean, it's not that far off
> to want to use the oracle ejb 3 container + an oracle product with
> spring!
>
> ./tch
>
>
>
> On Tue, Jul 6, 2010 at 3:10 PM, Tim Hollosy <hollosyt@xxxxxxxxx> wrote:
>
>
> Thanks James.
> I'm not sure how I would even go about removing spring, since the app
> uses spring for _everything_.
>
> I am using the static weaving ant task, and when I left the provider
> off I get a stack trace when doing field accessing on a lazy field.
> The trace is this:
>
> So, it looks like it's like an odd mix of toplink weaved methods on my
> eclipslink weaved class. If I try to set the persistence provider to
> eclipselink I get the ClassLoader issues the first time I try to
> access the app.
>
>
>
> java.lang.NoSuchMethodError:
> com.redacted.Enrollment._toplink_setclientRec(Lcom/redacted/Client;)V
>        at com.redacted.Enrollment._persistence_set(Enrollment.java)
>        at
> org.eclipse.persistence.internal.descriptors.PersistenceObjectAttributeAccessor.setAttributeValueInObject(PersistenceObjectAttributeAccessor.java:46)
>        at
> org.eclipse.persistence.mappings.DatabaseMapping.setAttributeValueInObject(DatabaseMapping.java:1367)
>        at
> org.eclipse.persistence.mappings.ForeignReferenceMapping.buildCloneFromRow(ForeignReferenceMapping.java:198)
>        at
> org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildAttributesIntoWorkingCopyClone(ObjectBuilder.java:1260)
>        at
> org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildWorkingCopyCloneFromRow(ObjectBuilder.java:1381)
>        at
> org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObjectInUnitOfWork(ObjectBuilder.java:547)
>
>
> ./tch
>
>
>
> On Tue, Jul 6, 2010 at 2:55 PM, James Sutherland <jamesssss@xxxxxxxxx>
> wrote:
>
>
> I think the reason you get EclipseLink even when to setting the provider in
> OC4J is that you have set EclipseLink in your Spring config file, so Spring
> is ensuring that EclipseLink is being used.
>
> I think your class loader issue may be a conflict between using Spring
> inside OC4J where both have their own class loaders.
>
> You should use the static weaving ant task, and set weaving to static.
>
> You may want to try deploying to OC4J without Spring, to see if you issues
> are Spring related.
>
>
>
> tch wrote:
>
>
> I'm probably talking to myself here, but here's what I've determined
> so far today.
>
> I disabled static weaving in my persistence.xml and deployed in two
> different ways.
>
> Once, while leaving my persistence provider blank.
>
> When the application deployed I see al the EL Config weaving
> messages,etc. So I know that my app IS using Eclipselink, even though
> I did not define a persistence provider. When I start up the app and
> try to make my first DB connection spring starts up EL again and
> everything works great.
>
> Now, I edit the persistence.xml to specify EL as the persistence
> provider and restart the server. I get all the same EL Config messages
> as the server starts up. When I try to access the app this time, I get
> the ClassLoader error about the ClassLoader for my app already being
> closed.
>
> I inspect both ClassLoader log outputs, both times indeed the
> ClassLoader for my app is closed after predeployment of the
> persistence unit. However, there must be something special happening
> when I define the persistence provider, because only then do I get the
> class loader errors. Of course my end game here is to use Lazy Loading
> so I would think it should be possible to statically weave a spring
> app on oc4j with eclipselink.
>
>
> Once again any ideas on debugging this would be much appreciated.
>
> Some relevant spring EL config stuff:
>
>       <bean id="jpaAdapter"
>
> class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter">
>               <property name="databasePlatform"
>
> value="org.eclipse.persistence.platform.database.oracle.OraclePlatform"
> />
>               <property name="showSql" value="true" />
>       </bean>
>
>       <bean id="entityManagerFactory"
>
> class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
>               <property name="persistenceUnitName" value="CSHCSModel" />
>               <property name="dataSource" ref="dataSource" />
>               <property name="jpaVendorAdapter" ref="jpaAdapter" />
>       </bean>
>
> ./tch
>
>
>
> On Sat, Jul 3, 2010 at 1:54 PM, Tim Hollosy <hollosyt@xxxxxxxxx> wrote:
>
>
> This has been bothering me all weekend, I just don't understand enough
> about the guts of this EJB 3 stuff.
>
> So, some background. In the past I had a spring application deployed
> to OC4J with eclipselink 1.x, I didn't specify a provider so I just
> kind of assumed when I deployed it was using eclipselink as the
> provider since my DAO's all referenced the Eclipselink packages for
> query classes, etc. Now, I'm not sure if I used any weaving or not,
> though I think I do in that app. So what code base is really
> executing? Toplink essentials since I don't tell the container who the
> provider is, even though I reference all the EL packages in my code?
>
> So, anyway. I was having some issues with spring and EL 1, with
> weaving. It just didn't want to work sometimes. So I decided on this
> next app to move on to EL 2 and just statically weave. In my dev
> container (jetty) everything is working great. The first deploy to
> OC4J works fine as well. Though, in this first deploy I'm not using
> any weaving features. My next deploy I actually attempt to use lazy
> loading, etc. This time it fails, with my original error message. I
> tried removing the el jar's out of my WEB-INF/lib and adding them as a
> shared lib, and I get all these classloader issues I detailed later in
> the thread. Which I can only think has something do with Spring,
> though it's over my head.
>
> Is what you're saying though that I could try to weave my jar with the
> toplink essentials weaver and my code would work in OC4J? Which code
> base would be used though? I use some JPA 2 features in my new
> project, would that even work. I wouldn't have to reference toplink
> essentials packages in my DAO's etc?
>
> Thanks for your help, I'm really trying to understand the guts of how
> this actually works
>
>
> ./tch
>
>
>
>
>
>
> -----
> http://wiki.eclipse.org/User:James.sutherland.oracle.com James Sutherland
> http://www.eclipse.org/eclipselink/
>  EclipseLink ,  http://www.oracle.com/technology/products/ias/toplink/
> TopLink
> Wiki:  http://wiki.eclipse.org/EclipseLink EclipseLink ,
> http://wiki.oracle.com/page/TopLink TopLink
> Forums:  http://forums.oracle.com/forums/forum.jspa?forumID=48 TopLink ,
> http://www.nabble.com/EclipseLink-f26430.html EclipseLink
> Book:  http://en.wikibooks.org/wiki/Java_Persistence Java Persistence
> --
> View this message in context:
> http://old.nabble.com/Help-with-static-weaving-on-OC4J-seeing-._toplink_setmyColumn-tp29058272p29086725.html
> Sent from the EclipseLink - Users mailing list archive at Nabble.com.
>
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>
>
>
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>
>
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>
>


Back to the top