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

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
>>
>


Back to the top