Home » Eclipse Projects » EclipseLink » Equinox weaving configuration - Clasloading issue
Equinox weaving configuration - Clasloading issue [message #481551] |
Fri, 21 August 2009 13:49 |
Thomas Haskes Messages: 147 Registered: July 2009 |
Senior Member |
|
|
Hi Guys,
I recently migrated an application from an JavaEE App server to an OSGi
Environment and was wondering why my application suddenly showed such a
poor performance, when I discovered that lazy loading of entities
doesn't work anymore because the entites are not woven.
A Google search on the topic brought me to this tutorial [1] which I
followed, but now I get ClassNotFoundExceptions.
I have the following setup on the server:
Bundle A contains all the entities and exports them, so that the client
can use the same bundle.
Bundle A.internal creates the EMF and the EM an does all the persistence
operations.
Now when I start my application, I get a ClassNotFoundException on my
entity classes, but only when I start the fragments
org.eclipse.persistence.equinox and org.eclipse.equinox.weaving (which
are required to start to get lazy loading working as mentioned in [1]).
If I dont start those fragments, everything works, but then theres no
weaving at all(which is clear as the fragment are not started). It seems
that I have to configure some more Bundle-Requirements or
Buddy-Classloading directives, but I don't know where and what.
I provided the EMF with the Classloader of the Activator of the Bundle
A.internal, and that works when I do not start the fragments.
Any Ideas?
TIA
Tom
[1]
http://wiki.eclipse.org/EclipseLink/Examples/OSGi/Equinox_By te_Code_Weaving
|
|
| |
Re: Equinox weaving configuration - Clasloading issue [message #481859 is a reply to message #481551] |
Mon, 24 August 2009 15:03 |
Shaun Smith Messages: 197 Registered: July 2009 |
Senior Member |
|
|
Thomas Haskes wrote:
> ...
> Now when I start my application, I get a ClassNotFoundException on my
> entity classes, but only when I start the fragments
> org.eclipse.persistence.equinox and org.eclipse.equinox.weaving (which
> are required to start to get lazy loading working as mentioned in [1]).
You don't have to start those fragments; I don't think you can really. In
the example you deploy those fragments and start the javax.persistence
bundle and then the org.eclipse.persistence.jpa bundle. Finally you start
your client bundle.
> If I dont start those fragments, everything works, but then theres no
> weaving at all(which is clear as the fragment are not started). It seems
> that I have to configure some more Bundle-Requirements or
> Buddy-Classloading directives, but I don't know where and what.
You don't have to use an Equinox specific buddy loading with EclipseLink.
If it works without weaving then your config is probably ok.
One of the key issues for weaving is the requirement that framework
fragments be co-located with the org.eclipse.osgi bundle. In the example
[1], all the bundles are in the same folder so the fragment loads
properly. The way Equinox is launched is key to this working and the
config I describe is critical to success. If you're running inside PDE
then you need to checkout the source for Equinox (org.eclipse.osgi) from
CVS. See the comments on the Adaptor Hook [2] page for details. By
having the Equinox source in your dev environment when you deploy
org.eclipse.osgi and the framework extension fragment
org.eclipse.persistence.equinox.weaving are in the same folder. Luckily,
PDE launches Equinox in such a way that the fragments are loaded
correctly--when I went outside PDE I soon discovered that launching
Equinox with "java -jar org.eclipse.osgi_<version>" did not work, the
framework extensions are loaded after the Adapter Hook framework has
looked for extensions! So, as I said, *luckily* PDE launches Equinox in a
way that works.
> Any Ideas?
I've thrown out a bunch of background and hopefully this helps. In my
experience, the most common problem is the weaving extension either not
being attached to org.eclipse.osgi or being attached after the Adaptor
Hook framework has looked for extensions. Making sure you launch Equinox
as described should solve these issues. If this doesn't help can you post
your short status (ss) which will show if the fragments are properly
attached?
--Shaun
> Tom
> [1]
> http://wiki.eclipse.org/EclipseLink/Examples/OSGi/Equinox_By te_Code_Weaving
[2] http://wiki.eclipse.org/Adaptor_Hooks
|
|
|
Re: Equinox weaving configuration - Clasloading issue [message #482068 is a reply to message #481859] |
Tue, 25 August 2009 10:19 |
Thomas Haskes Messages: 147 Registered: July 2009 |
Senior Member |
|
|
Shaun, James, thanks for all the information, i'll try everything. But I
still have some questions and comments, though.
First of all, when I said that I started the fragments I did not mean
that I literally tried to start them (by using the "start bundle"
command on the console, as fragments cannot be started at all), I meant
that I checked them to be loaded in the eclipse run configuration, sorry
for being not clear at that point.
My first problem is that I do not really know where to put the line
osgi.framework.extensions=org.eclipse.persistence.jpa.equino x.weaving.
I know it belongs in the config.ini, and in a deployed equinox runtime
environment (i'm using inside an tomcat container using the
servletbridge) I have a config.ini where I can put the line.
The problem is that I would like to launch the application form inside
Eclipse using an OSGi launch configuration, and there is simply no
option in that dialog where I could place a config.ini file that should
be used (or I just didn't find it yet). There is such an option in the
"eclipse application" ("use an existing config.ini as template"), but I
could not get that to work as I need to provide an eclipse application
to start, which I don't have since I'm using pure OSGi for the
serverside here).
I tried to give the line as an argument (on the "arguments tab" in the
launch configuration dialog) like this:
-Declipse.ignoreApp=true -Dosgi.noShutdown=true -Xms512m -Xmx512m
-Dosgi.framework.extensions=org.eclipse.persistence.jpa.equi nox.weaving
Maybe this is wrong or does nothing at all.
But what really puzzles me is the classloading problem, I would have
expected some errors on indirection or something. As soon as the
fragments are checked in the launch configuration, eclipselink complains
about not being able to find the (entity) classes defined in the
persistence.xml
To be honest I'm not quite sure that I understood all of your
suggestions right, but I think the root of the problem is probably that
I didn't place the aforementioned framework extensions configuration
line in the right place, so maybe we should start solving this first.
For the sake of completeness I post the short status and the exception
message, maybe it helps. The exception occurs when
Persistence.createEntityManager() is called in this part of code:
HashMap<String, Object> props = new HashMap<String, Object>();
props.put(PersistenceUnitProperties.EXCLUSIVE_CONNECTION_MOD E, "Always");
entityManagerFactory = Persistence.createEntityManagerFactory("tup_pu",
props);
Here is the short status output:
id State Bundle
0 ACTIVE org.eclipse.osgi_3.4.2.R34x_v20080826-1230
Fragments=1
1 RESOLVED
org.eclipse.persistence.jpa.equinox.weaving_1.1.2.v20090612- r4475
Master=0
2 ACTIVE com.springsource.org.aopalliance_1.0.0
3 ACTIVE com.tp.server.persistence_1.0.0
4 ACTIVE com.tp.server.remoting_1.0.0
5 ACTIVE com.tp.server.persistence.internal_1.0.0
6 ACTIVE org.eclipse.persistence.jpa_1.1.2.v20090612-r4475
Fragments=35
7 ACTIVE com.springsource.net.sf.cglib_2.1.3
8 ACTIVE org.eclipse.osgi.services_3.1.200.v20071203
9 RESOLVED org.eclipse.persistence.oracle_1.1.2.v20090612-r4475
Master=44
10 ACTIVE com.tp.server.lisa.masterdata.internal_1.0.0
11 ACTIVE org.eclipse.persistence.antlr_1.1.2.v20090612-r4475
12 ACTIVE com.tp.server.util_1.0.0
13 ACTIVE org.springframework.osgi.web_1.2.0
14 ACTIVE com.tp.server.config.ui.internal_1.0.0
15 ACTIVE org.springframework.web_2.5.6
16 ACTIVE com.springsource.slf4j.api_1.5.0
Fragments=24
17 ACTIVE com.tp.oracledriver_1.0.0
18 ACTIVE org.springframework.osgi.extender_1.2.0
19 ACTIVE org.springframework.beans_2.5.6
20 ACTIVE org.eclipse.equinox.http.servlet_1.0.100.v20080427-0830
21 ACTIVE org.springframework.osgi.core_1.2.0
22 ACTIVE javax.persistence_1.99.0.v200906021518
23 ACTIVE com.tp.server.lisa.core_1.0.0
24 RESOLVED com.springsource.slf4j.log4j_1.5.0
Master=16
25 ACTIVE com.tp.server.config.ui_1.0.0
26 ACTIVE com.tp.server.lisa.masterdata_1.0.0
27 ACTIVE org.eclipse.equinox.http.jetty_2.0.0.v20090429-1630
28 ACTIVE org.springframework.osgi.io_1.2.0
29 ACTIVE org.springframework.orm_2.5.6
30 ACTIVE org.springframework.core_2.5.6
31 ACTIVE org.springframework.aop_2.5.6
32 ACTIVE com.springsource.slf4j.org.apache.commons.logging_1.5.0
33 ACTIVE com.tp.server.lisa.core.internal_1.0.0
34 ACTIVE org.mortbay.jetty.server_6.1.15.v200904241724
35 RESOLVED org.eclipse.persistence.jpa.equinox_1.1.2.v20090612-r4475
Master=6
36 ACTIVE javax.servlet_2.5.0.v200806031605
37 RESOLVED org.springframework.osgi.log4j.config_1.0.0
Master=38
38 ACTIVE org.springframework.osgi.log4j.osgi_1.2.15.SNAPSHOT
Fragments=37
39 ACTIVE org.springframework.transaction_2.5.6
40 ACTIVE org.springframework.web.servlet_2.5.6
41 ACTIVE org.mortbay.jetty.util_6.1.15.v200904241724
42 ACTIVE org.eclipse.equinox.common_3.4.0.v20080421-2006
43 ACTIVE org.springframework.context_2.5.6
44 ACTIVE org.eclipse.persistence.core_1.1.2.v20090612-r4475
Fragments=9
And the exception message:
------------------------------------------------------------ ----------------
javax.persistence.PersistenceException: Exception [EclipseLink-28018]
(Eclipse Persistence Services - 1.1.2.v20090612-r4475):
org.eclipse.persistence.exceptions.EntityManagerSetupExcepti on
Exception Description: Predeployment of PersistenceUnit [tup_pu] failed.
Internal Exception: Exception [EclipseLink-7156] (Eclipse Persistence
Services - 1.1.2.v20090612-r4475):
org.eclipse.persistence.exceptions.ValidationException
Exception Description: Unable to find the class named
[com.tp.server.lisa.core.Company]. Ensure the class name/path is correct
and available to the classloader.
Internal Exception: java.lang.ClassNotFoundException:
com.tp.server.lisa.core.Company
at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl. predeploy(EntityManagerSetupImpl.java:878)
at
org.eclipse.persistence.jpa.PersistenceProvider.createEntity ManagerFactory(PersistenceProvider.java:162)
at
org.eclipse.persistence.jpa.PersistenceProvider.createEntity ManagerFactory(PersistenceProvider.java:67)
at javax.persistence.Persistence.createEntityManagerFactory(Unk nown Source)
at
com.tp.server.persistence.internal.Activator.getEntityManage rFactory(Activator.java:49)
at
com.tp.server.persistence.internal.TransactionManagerBean.lo gin(TransactionManagerBean.java:26)
at
com.tp.server.persistence.internal.TransactionManagerBean$$F astClassByCGLIB$$d216f03b.invoke( <generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at
org.springframework.aop.framework.Cglib2AopProxy$CglibMethod Invocation.invokeJoinpoint(Cglib2AopProxy.java:700)
at
org.springframework.aop.framework.ReflectiveMethodInvocation .proceed(ReflectiveMethodInvocation.java:149)
at
org.springframework.aop.support.DelegatingIntroductionInterc eptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at
org.springframework.aop.support.DelegatingIntroductionInterc eptor.invoke(DelegatingIntroductionInterceptor.java:119)
at
org.springframework.aop.framework.ReflectiveMethodInvocation .proceed(ReflectiveMethodInvocation.java:171)
at
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvi sedInterceptor.intercept(Cglib2AopProxy.java:635)
at
com.tp.server.persistence.internal.TransactionManagerBean$$E nhancerByCGLIB$$3f29ba32.login( <generated>)
at
com.tp.server.persistence.internal.PersistenceSessionBean.lo gin(PersistenceSessionBean.java:36)
at
com.tp.server.persistence.internal.PersistenceSessionBean$$F astClassByCGLIB$$21a5a443.invoke( <generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at
org.springframework.aop.framework.Cglib2AopProxy$CglibMethod Invocation.invokeJoinpoint(Cglib2AopProxy.java:700)
at
org.springframework.aop.framework.ReflectiveMethodInvocation .proceed(ReflectiveMethodInvocation.java:149)
at
org.springframework.aop.support.DelegatingIntroductionInterc eptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at
org.springframework.aop.support.DelegatingIntroductionInterc eptor.invoke(DelegatingIntroductionInterceptor.java:119)
at
org.springframework.aop.framework.ReflectiveMethodInvocation .proceed(ReflectiveMethodInvocation.java:171)
at
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvi sedInterceptor.intercept(Cglib2AopProxy.java:635)
at
com.tp.server.persistence.internal.PersistenceSessionBean$$E nhancerByCGLIB$$108b16ca.login( <generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.springframework.aop.support.AopUtils.invokeJoinpointUsin gReflection(AopUtils.java:307)
at
org.springframework.aop.framework.ReflectiveMethodInvocation .invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at
org.springframework.aop.framework.ReflectiveMethodInvocation .proceed(ReflectiveMethodInvocation.java:149)
at
org.springframework.remoting.support.RemoteInvocationTraceIn terceptor.invoke(RemoteInvocationTraceInterceptor.java:77)
at
org.springframework.aop.framework.ReflectiveMethodInvocation .proceed(ReflectiveMethodInvocation.java:171)
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke( JdkDynamicAopProxy.java:204)
at $Proxy16.login(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.springframework.remoting.support.RemoteInvocation.invoke (RemoteInvocation.java:205)
at
org.springframework.remoting.support.DefaultRemoteInvocation Executor.invoke(DefaultRemoteInvocationExecutor.java:38)
at
org.springframework.remoting.support.RemoteInvocationBasedEx porter.invoke(RemoteInvocationBasedExporter.java:78)
at
org.springframework.remoting.support.RemoteInvocationBasedEx porter.invokeAndCreateResult(RemoteInvocationBasedExporter.j ava:114)
at
org.springframework.remoting.httpinvoker.HttpInvokerServiceE xporter.handleRequest(HttpInvokerServiceExporter.java:74)
at
org.springframework.web.servlet.mvc.HttpRequestHandlerAdapte r.handle(HttpRequestHandlerAdapter.java:49)
at
org.springframework.web.servlet.DispatcherServlet.doDispatch (DispatcherServlet.java:875)
at
org.springframework.web.servlet.DispatcherServlet.doService( DispatcherServlet.java:807)
at
org.springframework.web.servlet.FrameworkServlet.processRequ est(FrameworkServlet.java:571)
at
org.springframework.web.servlet.FrameworkServlet.doPost(Fram eworkServlet.java:511)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at
org.eclipse.equinox.http.servlet.internal.ServletRegistratio n.handleRequest(ServletRegistration.java:90)
at
org.eclipse.equinox.http.servlet.internal.ProxyServlet.proce ssAlias(ProxyServlet.java:111)
at
org.eclipse.equinox.http.servlet.internal.ProxyServlet.servi ce(ProxyServlet.java:67)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at
org.eclipse.equinox.http.jetty.internal.HttpServerManager$In ternalHttpServiceServlet.service(HttpServerManager.java:311)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder .java:502)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandl er.java:380)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandl er.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandl er.java:765)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapp er.java:152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnectio n.java:535)
at
org.mortbay.jetty.HttpConnection$RequestHandler.content(Http Connection.java:880)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:747)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java: 218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java: 404)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEn dPoint.java:409)
at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThr eadPool.java:520)
Caused by: Exception [EclipseLink-28018] (Eclipse Persistence Services -
1.1.2.v20090612-r4475):
org.eclipse.persistence.exceptions.EntityManagerSetupExcepti on
Exception Description: Predeployment of PersistenceUnit [tup_pu] failed.
Internal Exception: Exception [EclipseLink-7156] (Eclipse Persistence
Services - 1.1.2.v20090612-r4475):
org.eclipse.persistence.exceptions.ValidationException
Exception Description: Unable to find the class named
[com.tp.server.lisa.core.Company]. Ensure the class name/path is correct
and available to the classloader.
Internal Exception: java.lang.ClassNotFoundException:
com.tp.server.lisa.core.Company
at
org.eclipse.persistence.exceptions.EntityManagerSetupExcepti on.predeployFailed(EntityManagerSetupException.java:210)
... 70 more
Caused by: Exception [EclipseLink-7156] (Eclipse Persistence Services -
1.1.2.v20090612-r4475):
org.eclipse.persistence.exceptions.ValidationException
Exception Description: Unable to find the class named
[com.tp.server.lisa.core.Company]. Ensure the class name/path is correct
and available to the classloader.
Internal Exception: java.lang.ClassNotFoundException:
com.tp.server.lisa.core.Company
at
org.eclipse.persistence.exceptions.ValidationException.unabl eToLoadClass(ValidationException.java:1821)
at
org.eclipse.persistence.internal.jpa.metadata.xml.XMLEntityM appings.getClassForName(XMLEntityMappings.java:141)
at
org.eclipse.persistence.internal.jpa.metadata.xml.XMLEntityM appings.getClassForName(XMLEntityMappings.java:175)
at
org.eclipse.persistence.internal.jpa.metadata.xml.XMLEntityM appings.initPersistenceUnitClasses(XMLEntityMappings.java:41 5)
at
org.eclipse.persistence.internal.jpa.metadata.MetadataProces sor.initPersistenceUnitClasses(MetadataProcessor.java:202)
at
org.eclipse.persistence.internal.jpa.metadata.MetadataProces sor.processEntityMappings(MetadataProcessor.java:425)
at
org.eclipse.persistence.internal.jpa.deployment.PersistenceU nitProcessor.processORMetadata(PersistenceUnitProcessor.java :299)
at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl. predeploy(EntityManagerSetupImpl.java:838)
... 69 more
Caused by: java.lang.ClassNotFoundException: com.tp.server.lisa.core.Company
at
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLoc alClassImpl(ClasspathManager.java:469)
at
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLoc alClass_LockClassLoader(ClasspathManager.java:443)
at
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLoc alClass(ClasspathManager.java:423)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.fin dLocalClass(DefaultClassLoader.java:193)
at
org.eclipse.persistence.internal.jpa.deployment.osgi.equinox .EquinoxInitializer$TempEquinoxEntityLoader.loadClass(Equino xInitializer.java:200)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at
org.eclipse.persistence.internal.security.PrivilegedAccessHe lper.getClassForName(PrivilegedAccessHelper.java:86)
at
org.eclipse.persistence.internal.jpa.metadata.xml.XMLEntityM appings.getClassForName(XMLEntityMappings.java:138)
... 75 more
------------------------------------------------------------ -
Thanks again,
Tom
Shaun Smith schrieb:
> Thomas Haskes wrote:
>> ...
>> Now when I start my application, I get a ClassNotFoundException on my
>> entity classes, but only when I start the fragments
>> org.eclipse.persistence.equinox and org.eclipse.equinox.weaving (which
>> are required to start to get lazy loading working as mentioned in [1]).
>
> You don't have to start those fragments; I don't think you can really.
> In the example you deploy those fragments and start the
> javax.persistence bundle and then the org.eclipse.persistence.jpa
> bundle. Finally you start your client bundle.
>
>> If I dont start those fragments, everything works, but then theres no
>> weaving at all(which is clear as the fragment are not started). It seems
>> that I have to configure some more Bundle-Requirements or
>> Buddy-Classloading directives, but I don't know where and what.
>
> You don't have to use an Equinox specific buddy loading with
> EclipseLink. If it works without weaving then your config is probably ok.
>
> One of the key issues for weaving is the requirement that framework
> fragments be co-located with the org.eclipse.osgi bundle. In the
> example [1], all the bundles are in the same folder so the fragment
> loads properly. The way Equinox is launched is key to this working and
> the config I describe is critical to success. If you're running inside
> PDE then you need to checkout the source for Equinox (org.eclipse.osgi)
> from CVS. See the comments on the Adaptor Hook [2] page for details.
> By having the Equinox source in your dev environment when you deploy
> org.eclipse.osgi and the framework extension fragment
> org.eclipse.persistence.equinox.weaving are in the same folder.
> Luckily, PDE launches Equinox in such a way that the fragments are
> loaded correctly--when I went outside PDE I soon discovered that
> launching Equinox with "java -jar org.eclipse.osgi_<version>" did not
> work, the framework extensions are loaded after the Adapter Hook
> framework has looked for extensions! So, as I said, *luckily* PDE
> launches Equinox in a way that works.
>
>> Any Ideas?
>
> I've thrown out a bunch of background and hopefully this helps. In my
> experience, the most common problem is the weaving extension either not
> being attached to org.eclipse.osgi or being attached after the Adaptor
> Hook framework has looked for extensions. Making sure you launch
> Equinox as described should solve these issues. If this doesn't help can
> you post your short status (ss) which will show if the fragments are
> properly attached?
>
> --Shaun
>
>> Tom
>
>> [1]
>> http://wiki.eclipse.org/EclipseLink/Examples/OSGi/Equinox_By te_Code_Weaving
>>
> [2] http://wiki.eclipse.org/Adaptor_Hooks
>
|
|
| |
Re: Equinox weaving configuration - Clasloading issue [message #482447 is a reply to message #482226] |
Wed, 26 August 2009 15:04 |
Thomas Haskes Messages: 147 Registered: July 2009 |
Senior Member |
|
|
This is a multi-part message in MIME format.
--------------090307030007050208070305
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: 7bit
Hi Shaun,
> Can you try to get weaving working with the example? Your application
> is using a number of other technologies that might be the issue. What
> I've described should work in a "pure" OSGi Equinox app.
I tried, unfortunately I wasn't able to make it work, I set up the
example project from the article in the wiki you wrote, and everything
works except that the Person class does not implement the marker
interface. I slightly changed the example project by putting the Person
entity in a seperate bundle to see if I can reproduce my classloading
issue that way (as entities reside in an extra bundle in my application,
too), but thats all (the classloading error does not occur in the sample
btw).
I attached the to plugin projects to this post, maybe you can have a
look at it. I don't get what I'm missing. i followed the tutorial [1]
exactly, added the two fragments to the launch config and added the VM
arg -Dosgi.framework.extensions=org.eclipse.persistence.jpa.equi nox.weaving
but I still get a "Person NOT Woven!" message.
> I'm not sure
> what effect introducing Spring has. I don't think you are using Spring
> to create and inject your EntityManager so how it may be a red herring.
> I suggest getting the wiki example working, then a small example with
> your domain model, then your full app.
>
With that classloading problem, I meanwhile ruled out spring as a cause
(I'm using the Spring HTTPInvoker for remoting only) ,
the classloading problem still occurs when I deploy the two fragments.
As everything works without deploying the fragments, I really don't get
what could cause the problem. I've given up. I think the best solution
for that is just to eleminate all entity-mappings from my datamodel so
that I am not depending on lazy loading anymore. I think with a little
effort I can use queries to get the related objects.
Thanks for helping and reading all my posts, I'm sorry it didn't work
out for me.
[1]
http://wiki.eclipse.org/EclipseLink/Examples/OSGi/Developing _with_EclipseLink_OSGi_in_PDE
--------------090307030007050208070305
Content-Type: application/octet-stream;
name="hello.jpa.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="hello.jpa.zip"
UEsDBAoAAAAAAMhbGjsAAAAAAAAAAAAAAAAKAAAAaGVsbG8uanBhL1BLAwQU AAAACADGWxo7
GOREa9AAAAB4AQAAFAAAAGhlbGxvLmpwYS8uY2xhc3NwYXRolZDBagIxEIbP LfQdltydrZfS
w26llC0oVItue5WYDOvUdBIniejbq6VS8SD0Nv/wzcfwV4Pttys2KJE816oP 96pANt4Sd7X6
aF97j2rwdHdbGadjDDotD+HmLyEn2RUrYlsr41kVx2WtvHSAxlGICF82gdOZ zfLghNG0mb9M
xu3zcNxMy0uOOKGwdmBxkTvI9HuJArOk2Wqxn2/tLmA50hs9a3p9eFDlv18K FsF4QRBcZxK0
7y53xPGaKoo5qY7jFdLnFHI6wQviH7gqzyvcA1BLAwQUAAAACADGWxo7GQUj decAAACeAgAA
EgAAAGhlbGxvLmpwYS8ucHJvamVjdL2SwU7EIBCGz5r4DpvehfXmgXaT1ext NybVB0AYuzQw
EKAbH19AqmkaEw/G2/z/zM9HYNju3ejNBXxQFtvmjmybDaCwUuHQNi/Ph9v7 ZtfdXDPn7Qgi
PkIQXrmYppN7xZAb6M6gtSWj44wWnRvCGgMYO0bnKrv1lFAEXajXSWnZOxBZ VfmQohxlcSrL
+oGA0MoFIKOMRFifCn7hJQD++wopwf0wZXaomi4NRleUX3GdBHLkqN4gxP3/ YntxBsP/BFqd
+ckTL04e6vSnWOGf9DQoPJVmppehnwKL78FVZq4z8WsXlvv1AVBLAwQKAAAA AADGWxo7AAAA
AAAAAAAAAAAAFAAAAGhlbGxvLmpwYS8uc2V0dGluZ3MvUEsDBBQAAAAIAMZb GjsSpf70qwAA
AIwBAAAuAAAAaGVsbG8uanBhLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQu Y29yZS5wcmVm
c5WOPQvCMBRFd6H/IeAemgoFCxlUHHQSFJxjc1si+eIlFfz3xqGzdXlcHvdc zvoOzXbTyJqW
CdFt6k407HC83lhT19tqhd6amMAjYQDB90j8BUomeCmqVaCRz5WnzrwPhHJc NBZUgsYIz423
xuOcaP/O+D4lvHpY6KUDWdGIfLEqD4GcFLz9TbpojSq+S9qRQtFxXKUEyicN n81gQBJEgZbS
8JP7l01hotnxA1BLAwQKAAAAAAAybRo7AAAAAAAAAAAAAAAADgAAAGhlbGxv LmpwYS9iaW4v
UEsDBAoAAAAAADJtGjsAAAAAAAAAAAAAAAAUAAAAaGVsbG8uanBhL2Jpbi9o ZWxsby9QSwME
CgAAAAAAMm0aOwAAAAAAAAAAAAAAABgAAABoZWxsby5qcGEvYmluL2hlbGxv L2pwYS9QSwME
FAAAAAgARXAaO/VKE3KMBQAAAgsAACcAAABoZWxsby5qcGEvYmluL2hlbGxv L2pwYS9BY3Rp
dmF0b3IuY2xhc3ONVll301YQ/m5iR4kRAUxZzFLCEnACiVgLxKwBAgZngYRQ 6EIV5cZRIkuu
LIekG93o3tK9pY/tQ18LPSeQck5Pn/uj2n5XdlanhBfpau7cmbnffDOjv//5 408A+3FPQ5XA
6mHpOJ4xkjeN01Zgj5mB52uICGzx/KwhLcfOF6Rheb40/KIb2Dlp9DjFrO0K 1PVkrp5Pd91M
nxWIZ0bMMdNwTDdr9Aa+7WZTAsvPeG4hMN2g33SKshZ1PBO6a6U7gZp82dCa zCJB8HzNMdu1
gxMC1cmmfoHIGW9QxlCNlTp0LBdYkbFd2VXMDUi/zxxwpArDs0yn3/Rt9V0W RoJhuyAQZSh+
INCYzKireYWsbQz5Zk7e8vxRo73oDjqSAQdyPEgpd7Fz45bMBzbvoGE9kZq9 4cyOimaDjmew
pg4Cm3TEsEzDswKrQuViYDvGBbMw3GnmY9iMlbXYKrCujKpju6OtlmMWCo5n Dko/hu1o1LBD
YOWsq+6BEWkFOnZil0BtVgZn1AFGk2yaA3koTMXQhN0amonMgi0de9AiUD99 PhM6FEhUWilt
pVS4ho692Ef480XidiSZWRhWqlLSVCmK4QAOaTgosFntjRt56RfsQiBdi2Sa Xet4DocFNli+
NAN5jmQLJjpN18xKv8O0SIkJgWPJSqKVXM43u9jp1DIcRUpDm8DOpzuh4xiO E+tFIhLYnlzS
MT2exGkNp1hOS6jqaMeZUob6fNMtMADyS2DXE7zMUaSnczivoYNxPYW6jguq gKIDkgWo4SKZ
MFuCUmnbshDmRnE8rYjbSR60ewPqq1tHDy4LaAUZdLGAWMGLpaVf3b5XRx+u UrcczwLdadb0
x3AN1zU8P1064W6a1RhicwMv0MSYaiPdQwJrk+m5PCurhWi/pONl3GTRD9nu oMDhZEWVPBVn
62DC0jAwrxZ7J4hnTscgeOVqTxXFmtJR2zN6eOmAV5dmjozPwtYwPN005m/r GCkhokSOqzLn
6MiphNRYXi5nB+oino58mCPL8QpSUdfTwMJvm9uX5yaZxqTvmo5xS5pjTMDc 0rpGkRyMoYhb
GsYEWpc0QjpQblwIXzrGweJbHzardC7vyBxJUlC4+0OmJcOm+gScS4KmGwrV 13W8EeInfb8W
b3FKlGjWcM0bk+5WBd3bCqHLtXiXZChvdnX3lRUInFXq0gLblu7kBDDve3nV MTMVPTmlwsiR
UMmnbSECVTInsHXJyqflAY/02Zj538Kiztr582oiPz2zjlYGe6yyxCp5e0KN 3d7AtEZ5IrSl
4SuBhqVwYsEUAi+v5tm3Or7GGs4/tqKzcsgsOtxdxza0+JCO9XpF35Idtgq7 fmanVYWGrZyK
1fzbqEICUdTwSwu/ajkoOSq5jlDGYc5nPb8O8C34jjY/xIr7oeoqPmN8A1uo 3IA4V3pJCatD
E0LNX2qsLZtbp0yJ23RcQ8kvzbsfItH8OzY+xubrD7Glc0+8oXkS2yaRnETr tXjtI+zvapnC
EdZWJBGZAn84psB/msdIU/9SWzQRjWcm0ZWIJKJTuMK7ROLpyCP0T+HFavyF dFv0AV5JRCcx
NHN8lB2VazZwWn6VPybpuP8IwT3UP8Br8TcncftXLFPLd7i8HwauLnqFVwGn eBTNqMNuyvbw
2q3YgRY0wuBzLxvBPs6K/ezDB6h/kN3oEByOznEcwW3u3kEb7iKFn3AcP+NU CNiJEhRlwNTq
PbxPqFYx1XfwAcFrxFv4EB8RtBaM4WN8wojaWa6f4jNG83kZ9JL+F9S/S8km VP1LNzUahIYv
NWzWcFTDSY2hMc9C0WhhWtBBiUpmTDAjKjXfzKa5PuRKmtoXeftLYeRrS9oz kcfKkdfhO3xf
Zs2OkA708gAbf5uxVhNKe0MrVSFNfghXP/4HUEsDBBQAAAAIAMZbGjvSW2D7 PwAAAFAAAAAa
AAAAaGVsbG8uanBhL2J1aWxkLnByb3BlcnRpZXMrzi8tSk7V01OwVSguStbn 5covLSkoLQEL
JGXmAQWApF5mXnJOaUpqMVDQ1zXEUdfTz01fJ4aXSwEV6PFyAQBQSwMECgAA AAAABlwaOwAA
AAAAAAAAAAAAABMAAABoZWxsby5qcGEvTUVUQS1JTkYvUEsDBBQAAAAIAEtw GjsjJuryJwEA
AFYCAAAeAAAAaGVsbG8uanBhL01FVEEtSU5GL01BTklGRVNULk1GjZBBT4NA EIXv/ArSs2yA
xMZiPNSkB5vUEBu9D8uUTl1m6bJg8de7hNKih8bsbb63b968DTDtsLbBB5qa NCd+JELvueFc
YbA5wwuLR/IKJSb+uoJxsO3KTCuSA9ijUlocrnjq7t6xAUU7QjPypbTUgtVm 8ldcht4bHhsy
GAzqxNemECgVVTUKqQ0K07ClEu+8X6jqt9YWWWJv+JgNy9ohzNMsEpGIZ38y OJL2l3SJr+C7
G+k5Qr46oWx60YpbMppLZOuagBa2qyASc2+dLoP0uvidydbTRl7KShsbpCA/ oZh2JZwTWcLa
XXFwfqdp/sdJ6MXCVdjGYbgI52Ec3UcPs/PhUIHco8jRZJ045Jm8UYjUvKPi hoDYomFQwiV0
8/8ovxBa4sL7AVBLAwQUAAAACAC9bRo7x/q++fYBAACnBgAAIgAAAGhlbGxv LmpwYS9NRVRB
LUlORi9wZXJzaXN0ZW5jZS54bWytlE2P0zAQhu9I/AeTu+0WbiHtge0igQpC 2gu3lWMPqYtj
Rx4n6f57nI9ms91FahZyijzvPDMev3ZWgUeNAawE0nT/zm6SNVsl5FQai5vk EEKVcn4UjWBY
WyZdyWOIW+Sz3FGenlBPKW3bsvYDc77g71erNf/5bX8nD1AKqi0GMWShTrFf 3DspQl/9uork
Otn8/359v2InVMn27RsSv2wWo7XVgVhRQmwAjHHsWImzsBdLIxC3U4yBDTpo QPYjUpzN+CCY
ZVTexQqdZrbaR95RSm7LHJQCRXbg8weyd4W2hNJL6Qh5GHsDaXSFYLT9zYLw BQSqRBC5wDjN
Rpg6anpgwheQjiqXTHkdHTBR4rkxUYl4OEx1wEF07no3iBcXqb2ZKnQLac9O 4+FpiR+lBxFg
E3wNy9ExV1HprAXZGQlZqe1Ua72c13od4H8CcxHkgXZYbYsJ9HX36WZgvWCS 3Xi2ZLg55KYb
UOxlmVGUMrQAC77PnSqrmEGFjUPrx05jKQO4aF9PyczVoaoDLZ16dONkz7/t MTo/Wr8gdxC6
weCyvZkhmxlo4NFan798v03Ikp2cOeHQ+WgC/RKmu1mvISEgzsf9Dyg4Sah6 D060/o68boe6
hPj+ltVFZ3w7J13PbUE0c0OPt/dlWMafvYoZv3yHY+DJ4vYPUEsDBAoAAAAA AMZbGjsAAAAA
AAAAAAAAAAAOAAAAaGVsbG8uanBhL3NyYy9QSwMECgAAAAAAxlsaOwAAAAAA AAAAAAAAABQA
AABoZWxsby5qcGEvc3JjL2hlbGxvL1BLAwQKAAAAAADjbBo7AAAAAAAAAAAA AAAAGAAAAGhl
bGxvLmpwYS9zcmMvaGVsbG8vanBhL1BLAwQUAAAACABFcBo7yXsleQADAABW CAAAJgAAAGhl
bGxvLmpwYS9zcmMvaGVsbG8vanBhL0FjdGl2YXRvci5qYXZhrVRNbxoxED2D xH9w6WWJEqOe
aasmIW2p8qWQKMfKeGfBidde2V4IqvLfO16bZSGkNFUv+2G/eX4znjcF449s CmQGUmr6ULBB
p91pi7zQxpEHNme0dELS78zOLlixvflECzBWWAeKAz1TTrjlBVNIaAZ/C/zK uNNm+Sf89fq7
qUCbKQUuRWGBcm2AmhKJc8TLcirUYCewycu1ysS0SX+nhLs2GkFOgN3PIJQD o5ikWD9cp9+r
1xviFsDmQm1ouMclSDc5tJ0KmhmWw0KbR3pSqlTCqUaWJ9csSX2NFHyNMYeK WasK1D846LTJ
AbmdAcGqiznDyhMumbUEa+GMlpY43CywgEdCESkyIHzJJfi4fqddlBMpeAw5 rilQBajUklB4
8ssf1ur3q4NWXKMhrsV465jDVyawBGTsDFaAXJ/ffRtd/hwNySfSrfPoDppc dsYMpEQoJMBK
eULjJcCKcS2pWPWAj/Z5t2LimKh1pvRNVy3217Lq6KTnc2g9x+gQnCitjn5g c6aa98JSeH6x
AOFrT0fa9yjTuGTfjfa2hc21SEmI3QBWt+YD8NaMXlhy9sShcEJXd9Bq2dI3 ZQhcQQd+I1QH
K+1mwlYr0eEfw20ckqvJA3D3mRToBotABQvyCiaJnB5Ji9IlrxqKnp4fj8fn V8fDs5vD6mw6
BXfquynp1Z/nmqWAdxBodw0LAnmGmhrneGSrRbkB7IZdIUmjp3YQIyMSIu0u ipgg5F7irWHK
evdohZongHWM+8FpZKInsV5hIe7iMrXgLvHGk+6JnnRr0jgYEkTU0EoMRYOk SWChlecOyYcA
GS8x75zq0lG0gHJSrcN36eQ6z4WLUiKIS22hzi3b+BcZScIwCweP8kJCjkPF jvzoyhiHLWEv
JljY6AUr1YrBmFpxN1bsXs9BvYsFeSYgLewPury63Q6s7Pq/TYue1cU/WxZD 3+TY2piqlHLQ
9DAyNS38vDnZbsCVRoXp/XJKrrM2Fe5VWCOBFxMVe2oIGSuli+OxFcnqURtE 4eM3UEsBAhQA
CgAAAAAAyFsaOwAAAAAAAAAAAAAAAAoAAAAAAAAAAAAQAAAAAAAAAGhlbGxv LmpwYS9QSwEC
FAAUAAAACADGWxo7GOREa9AAAAB4AQAAFAAAAAAAAAABACAAAAAoAAAAaGVs bG8uanBhLy5j
bGFzc3BhdGhQSwECFAAUAAAACADGWxo7GQUjdecAAACeAgAAEgAAAAAAAAAB ACAAAAAqAQAA
aGVsbG8uanBhLy5wcm9qZWN0UEsBAhQACgAAAAAAxlsaOwAAAAAAAAAAAAAA ABQAAAAAAAAA
AAAQAAAAQQIAAGhlbGxvLmpwYS8uc2V0dGluZ3MvUEsBAhQAFAAAAAgAxlsa OxKl/vSrAAAA
jAEAAC4AAAAAAAAAAQAgAAAAcwIAAGhlbGxvLmpwYS8uc2V0dGluZ3Mvb3Jn LmVjbGlwc2Uu
amR0LmNvcmUucHJlZnNQSwECFAAKAAAAAAAybRo7AAAAAAAAAAAAAAAADgAA AAAAAAAAABAA
AABqAwAAaGVsbG8uanBhL2Jpbi9QSwECFAAKAAAAAAAybRo7AAAAAAAAAAAA AAAAFAAAAAAA
AAAAABAAAACWAwAAaGVsbG8uanBhL2Jpbi9oZWxsby9QSwECFAAKAAAAAAAy bRo7AAAAAAAA
AAAAAAAAGAAAAAAAAAAAABAAAADIAwAAaGVsbG8uanBhL2Jpbi9oZWxsby9q cGEvUEsBAhQA
FAAAAAgARXAaO/VKE3KMBQAAAgsAACcAAAAAAAAAAAAgAAAA/gMAAGhlbGxv LmpwYS9iaW4v
aGVsbG8vanBhL0FjdGl2YXRvci5jbGFzc1BLAQIUABQAAAAIAMZbGjvSW2D7 PwAAAFAAAAAa
AAAAAAAAAAEAIAAAAM8JAABoZWxsby5qcGEvYnVpbGQucHJvcGVydGllc1BL AQIUAAoAAAAA
AAZcGjsAAAAAAAAAAAAAAAATAAAAAAAAAAAAEAAAAEYKAABoZWxsby5qcGEv TUVUQS1JTkYv
UEsBAhQAFAAAAAgAS3AaOyMm6vInAQAAVgIAAB4AAAAAAAAAAQAgAAAAdwoA AGhlbGxvLmpw
YS9NRVRBLUlORi9NQU5JRkVTVC5NRlBLAQIUABQAAAAIAL1tGjvH+r759gEA AKcGAAAiAAAA
AAAAAAEAIAAAANoLAABoZWxsby5qcGEvTUVUQS1JTkYvcGVyc2lzdGVuY2Uu eG1sUEsBAhQA
CgAAAAAAxlsaOwAAAAAAAAAAAAAAAA4AAAAAAAAAAAAQAAAAEA4AAGhlbGxv LmpwYS9zcmMv
UEsBAhQACgAAAAAAxlsaOwAAAAAAAAAAAAAAABQAAAAAAAAAAAAQAAAAPA4A AGhlbGxvLmpw
YS9zcmMvaGVsbG8vUEsBAhQACgAAAAAA42waOwAAAAAAAAAAAAAAABgAAAAA AAAAAAAQAAAA
bg4AAGhlbGxvLmpwYS9zcmMvaGVsbG8vanBhL1BLAQIUABQAAAAIAEVwGjvJ eyV5AAMAAFYI
AAAmAAAAAAAAAAEAIAAAAKQOAABoZWxsby5qcGEvc3JjL2hlbGxvL2pwYS9B Y3RpdmF0b3Iu
amF2YVBLBQYAAAAAEQARAK4EAADoEQAAAAA=
--------------090307030007050208070305
Content-Type: application/octet-stream;
name="hello.jpa.entities.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="hello.jpa.entities.zip"
UEsDBAoAAAAAAOBsGjsAAAAAAAAAAAAAAAATAAAAaGVsbG8uanBhLmVudGl0 aWVzL1BLAwQU
AAAACADgbBo7GOREa9AAAAB4AQAAHQAAAGhlbGxvLmpwYS5lbnRpdGllcy8u Y2xhc3NwYXRo
lZDBagIxEIbPLfQdltydrZfSw26llC0oVItue5WYDOvUdBIniejbq6VS8SD0 Nv/wzcfwV4Pt
tys2KJE816oP96pANt4Sd7X6aF97j2rwdHdbGadjDDotD+HmLyEn2RUrYlsr 41kVx2WtvHSA
xlGICF82gdOZzfLghNG0mb9Mxu3zcNxMy0uOOKGwdmBxkTvI9HuJArOk2Wqx n2/tLmA50hs9
a3p9eFDlv18KFsF4QRBcZxK07y53xPGaKoo5qY7jFdLnFHI6wQviH7gqzyvc A1BLAwQUAAAA
CADgbBo7L1a+QewAAACnAgAAGwAAAGhlbGxvLmpwYS5lbnRpdGllcy8ucHJv amVjdL2SwU7E
IBCGz5r4DpveBb15YLvJarxpTFYfAGHsTgMDAbrx8QWkmqYx8WC8zf/P/HwE RuzerdmcIER0
tO2u2VW3AVJOIw3b7uX5/vKm2/UX58IHN4JKdxBVQJ/ydHbPBEkL/RGMcWz0 kgElTAhR8Noo
E8pZm+1e8LkqbjsuVsEX6nVCow8eVFFN3uaoJF2dBnVhYKAM+ghs1IkpF3Ih T7IGIHxfISdk
GKbCjk3zpSH4ivIrrtfAHiThG8S0/1/sQR3Byj+BNmd+8sxLU4A2/SlW+Ccz DUiPtVnodein
wOJ7aJWZ60L82oXlon0AUEsDBAoAAAAAAOBsGjsAAAAAAAAAAAAAAAAdAAAA aGVsbG8uanBh
LmVudGl0aWVzLy5zZXR0aW5ncy9QSwMEFAAAAAgA4GwaO9hGDH2sAAAAjAEA ADcAAABoZWxs
by5qcGEuZW50aXRpZXMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3Jl LnByZWZzlY47
C8IwFIX3Qv9DwD30gcUKHVQcdBIUnGNzGiJ5cZMK/nvr0Nm6XA6X8x2+1R2S 7UbFqoaV9bbe
bNctOxyvN1YVRZtn6I0OETwQBhBcj8hfoKi968o886T4XHnKxHtPmI4N2oCm IKHguHZGO5wj
7d8J32cHJx4GculAEqSQLkakwZPtSt78Jm0wWky+S9qB/KRjuYgRlE4SLulB gzoQeVpKw432
Xzb6kWbHD1BLAwQKAAAAAADobBo7AAAAAAAAAAAAAAAAFwAAAGhlbGxvLmpw YS5lbnRpdGll
cy9iaW4vUEsDBAoAAAAAAOhsGjsAAAAAAAAAAAAAAAAdAAAAaGVsbG8uanBh LmVudGl0aWVz
L2Jpbi9oZWxsby9QSwMECgAAAAAAMm0aOwAAAAAAAAAAAAAAACEAAABoZWxs by5qcGEuZW50
aXRpZXMvYmluL2hlbGxvL2pwYS9QSwMECgAAAAAAMm0aOwAAAAAAAAAAAAAA ACoAAABoZWxs
by5qcGEuZW50aXRpZXMvYmluL2hlbGxvL2pwYS9lbnRpdGllcy9QSwMEFAAA AAgAYHIaO/9T
hlHNAQAAZwMAADYAAABoZWxsby5qcGEuZW50aXRpZXMvYmluL2hlbGxvL2pw YS9lbnRpdGll
cy9QZXJzb24uY2xhc3N1U11rE0EUPZPPdrvaqEnaNK0f1Ye0ggu+RgoiKoFQ xUreJ9khnbCZ
LbsT0f/kg0KL4IM/wB8lnplEiknKsnNn7px7zpk7u7///PwF4DmeVFEQaJ2r JEmjyYWMlLHa
apVH71WWp6aKkkBtIj/JKJFmHL0bTtTIChR0LCB6AiUjp0rgbv8ac2YzbcZd gcoLbbQ9ESh2
jgaEvkpjFaCIWyE2EQhs97VRp7PpUGUf5TDxNOlIJgOZabdeJEv2XOcC7f6N LqlVHivbi70U
XbU+zIiYqoHONTleGpNaaXVqyNP0Vj9HFyzVuVVmpKJeTIrDNRtvlVGZtCoe yGSmupsQ2A1R
RoWK+Vyx1Om501Vp4NT3ot45Wu2Gq7wfoooNQvN/0EZnFenIgrN0lo3UG+3O vzU/5DOHFNhb
4/K1a8eXLh5RpMh7LfChRz+jImOZO+w5xy2uIkbhssc/EH73sNscKz65gW2O 4RyAGu4w8mZw
j6g65wFjg7HJ93+yS+x8XSKrrSVrYW/h5MR7Jfq4fYWdayuBz9ZZ0/AMzTlq weBmZa/AzwL7
K6e6xMG3JSO7a408wMMVI0+vcLBspM2a/RuMuAbzh2DzXc2h75HTfAz8BVBL AwQUAAAACADg
bBo70ltg+z8AAABQAAAAIwAAAGhlbGxvLmpwYS5lbnRpdGllcy9idWlsZC5w cm9wZXJ0aWVz
K84vLUpO1dNTsFUoLkrW5+XKLy0pKC0BCyRl5gEFgKReZl5yTmlKajFQ0Nc1 xFHX089NXyeG
l0sBFejxcgEAUEsDBAoAAAAAAOBsGjsAAAAAAAAAAAAAAAAcAAAAaGVsbG8u anBhLmVudGl0
aWVzL01FVEEtSU5GL1BLAwQUAAAACABCcBo76Ia0s7wAAAAxAQAAJwAAAGhl bGxvLmpwYS5l
bnRpdGllcy9NRVRBLUlORi9NQU5JRkVTVC5NRmWPsQ7CMAxE935Ff6ARMDAU MYCUASQQAond
BAOGNCmJU7V8PakgCIS8+Z3vziswdELPxR6dJ2vKfCgG2TyYo8Zi9YYfNkpk DRWWuTRMTOjT
dtdVB6tJvegFtbbiWoPAt27iyZw1crSasguY7r6z49wDaDoRusS3eA/k8Chb VIGjUpqGnDVV
NC7zJTSwk8VQjLNFVVvHxQbUDc6xwjWiVtS9vWc0CjPZ/ir+S6bQmWJqoE/b 9D91Za7h0WVP
UEsDBAoAAAAAAONsGjsAAAAAAAAAAAAAAAAXAAAAaGVsbG8uanBhLmVudGl0 aWVzL3NyYy9Q
SwMECgAAAAAA42waOwAAAAAAAAAAAAAAAB0AAABoZWxsby5qcGEuZW50aXRp ZXMvc3JjL2hl
bGxvL1BLAwQKAAAAAAAwbRo7AAAAAAAAAAAAAAAAIQAAAGhlbGxvLmpwYS5l bnRpdGllcy9z
cmMvaGVsbG8vanBhL1BLAwQKAAAAAAADbRo7AAAAAAAAAAAAAAAAKgAAAGhl bGxvLmpwYS5l
bnRpdGllcy9zcmMvaGVsbG8vanBhL2VudGl0aWVzL1BLAwQUAAAACABgcho7 oFEAadoAAADD
AQAANQAAAGhlbGxvLmpwYS5lbnRpdGllcy9zcmMvaGVsbG8vanBhL2VudGl0 aWVzL1BlcnNv
bi5qYXZhfY9BasMwEEXXMvgOs2w2ukAIZFOKN6UQ6H5qDc4kiiyksWkJuXsl SzRuFtkILP33
/rfH/owDwZGsHfXJoyYnLExx2zZtwxc/BoETzvitPYXIUcj1pF9z6mf7JPFG jgIKmU+0Ez1L
dia9Qtvsi7Rt/PRluYfeYozwkZKjg2ueo3zgOTmBnQBn7O/mIIHdAA4vVGxq 35l8/t+RiWLP
ioGkMy+bLFcqkEzBVe2tOGp2HtlAXMKluSJy5KjT0+5OqTtVJ6WS97TqoaYO XZCHliW9+p91
Wf5OdSv69gtQSwECFAAKAAAAAADgbBo7AAAAAAAAAAAAAAAAEwAAAAAAAAAA ABAAAAAAAAAA
aGVsbG8uanBhLmVudGl0aWVzL1BLAQIUABQAAAAIAOBsGjsY5ERr0AAAAHgB AAAdAAAAAAAA
AAEAIAAAADEAAABoZWxsby5qcGEuZW50aXRpZXMvLmNsYXNzcGF0aFBLAQIU ABQAAAAIAOBs
GjsvVr5B7AAAAKcCAAAbAAAAAAAAAAEAIAAAADwBAABoZWxsby5qcGEuZW50 aXRpZXMvLnBy
b2plY3RQSwECFAAKAAAAAADgbBo7AAAAAAAAAAAAAAAAHQAAAAAAAAAAABAA AABhAgAAaGVs
bG8uanBhLmVudGl0aWVzLy5zZXR0aW5ncy9QSwECFAAUAAAACADgbBo72EYM fawAAACMAQAA
NwAAAAAAAAABACAAAACcAgAAaGVsbG8uanBhLmVudGl0aWVzLy5zZXR0aW5n cy9vcmcuZWNs
aXBzZS5qZHQuY29yZS5wcmVmc1BLAQIUAAoAAAAAAOhsGjsAAAAAAAAAAAAA AAAXAAAAAAAA
AAAAEAAAAJ0DAABoZWxsby5qcGEuZW50aXRpZXMvYmluL1BLAQIUAAoAAAAA AOhsGjsAAAAA
AAAAAAAAAAAdAAAAAAAAAAAAEAAAANIDAABoZWxsby5qcGEuZW50aXRpZXMv YmluL2hlbGxv
L1BLAQIUAAoAAAAAADJtGjsAAAAAAAAAAAAAAAAhAAAAAAAAAAAAEAAAAA0E AABoZWxsby5q
cGEuZW50aXRpZXMvYmluL2hlbGxvL2pwYS9QSwECFAAKAAAAAAAybRo7AAAA AAAAAAAAAAAA
KgAAAAAAAAAAABAAAABMBAAAaGVsbG8uanBhLmVudGl0aWVzL2Jpbi9oZWxs by9qcGEvZW50
aXRpZXMvUEsBAhQAFAAAAAgAYHIaO/9ThlHNAQAAZwMAADYAAAAAAAAAAAAg AAAAlAQAAGhl
bGxvLmpwYS5lbnRpdGllcy9iaW4vaGVsbG8vanBhL2VudGl0aWVzL1BlcnNv bi5jbGFzc1BL
AQIUABQAAAAIAOBsGjvSW2D7PwAAAFAAAAAjAAAAAAAAAAEAIAAAALUGAABo ZWxsby5qcGEu
ZW50aXRpZXMvYnVpbGQucHJvcGVydGllc1BLAQIUAAoAAAAAAOBsGjsAAAAA AAAAAAAAAAAc
AAAAAAAAAAAAEAAAADUHAABoZWxsby5qcGEuZW50aXRpZXMvTUVUQS1JTkYv UEsBAhQAFAAA
AAgAQnAaO+iGtLO8AAAAMQEAACcAAAAAAAAAAQAgAAAAbwcAAGhlbGxvLmpw YS5lbnRpdGll
cy9NRVRBLUlORi9NQU5JRkVTVC5NRlBLAQIUAAoAAAAAAONsGjsAAAAAAAAA AAAAAAAXAAAA
AAAAAAAAEAAAAHAIAABoZWxsby5qcGEuZW50aXRpZXMvc3JjL1BLAQIUAAoA AAAAAONsGjsA
AAAAAAAAAAAAAAAdAAAAAAAAAAAAEAAAAKUIAABoZWxsby5qcGEuZW50aXRp ZXMvc3JjL2hl
bGxvL1BLAQIUAAoAAAAAADBtGjsAAAAAAAAAAAAAAAAhAAAAAAAAAAAAEAAA AOAIAABoZWxs
by5qcGEuZW50aXRpZXMvc3JjL2hlbGxvL2pwYS9QSwECFAAKAAAAAAADbRo7 AAAAAAAAAAAA
AAAAKgAAAAAAAAAAABAAAAAfCQAAaGVsbG8uanBhLmVudGl0aWVzL3NyYy9o ZWxsby9qcGEv
ZW50aXRpZXMvUEsBAhQAFAAAAAgAYHIaO6BRAGnaAAAAwwEAADUAAAAAAAAA AQAgAAAAZwkA
AGhlbGxvLmpwYS5lbnRpdGllcy9zcmMvaGVsbG8vanBhL2VudGl0aWVzL1Bl cnNvbi5qYXZh
UEsFBgAAAAASABIAqgUAAJQKAAAAAA==
--------------090307030007050208070305--
|
|
| |
Re: Equinox weaving configuration - Clasloading issue [message #482831 is a reply to message #482754] |
Fri, 28 August 2009 09:38 |
Thomas Haskes Messages: 147 Registered: July 2009 |
Senior Member |
|
|
Shaun Smith schrieb:
> Hi Thomas,
>
> I'll take a detailed look at your code but right away I can see you
> are not following the instructions. In the example, all the code is in
> single bundle with an Activator that implements
> org.osgi.framework.BundleActivator. Your version is using Eclipse
> classes.
I missed to check the OSGi Target radio button in the new plugin wizard,
I see, but I let the activator implement the BundleActivator interface
instead of extending Plugin (which I thought is the only difference, but
it seems that it is not). Sorry.
Anyway, I made some progress on the whle issue:
First, I was able to get the example running, attached it as example1.zip.
Second, I was able to reproduce the class loading error with that
example, it now behaves exactly as may application does. Attached it as
example2.zip. It would be nice if you could confirm this and tell me if
that behaviour is a bug, or just cannot work the way I'm using it.
So here is what you need to do to (by using the examples it should be
just a matter of minutes):
Optional: Unzip the example1.zip attachment and import the project
"hello.jpa" into a fresh workspace, create a launch configuration with
the two weaving related fragment and put the
-Dosgi.framework.extensions=org.eclipse.persistence.jpa.equi nox.weaving
parameter into the vm args. See the "Person woven" message. This example
works.
Next: delete the "hello.jpa" project from the workspace and import the
two projects "hello.jpa" (which is basically the same project as before,
except that the "class" child in the persistence.xml now points to
"hello.jpa.entities.Person" and that the "hello.jpa.entities package is
imported in the manifest.mf) and "hello.jpa.entities". This setup
reflects the one my application has, entities just reside in another bundle.
Create a run configuration with everything neccessary for weaving again
(fragments vm arg etc. don't forget to deploy "hello.jpa.entities"). You
see that the hello.jpa bundle does not start automatically. If you start
form the console you get a classloading error "hello.jpa.entities not
found". Remove the two weaving related fragments from the run
configuration, leave evrything else as it is. Launch it and see the
example working (except weaving). The "Person NOT woven" message
appears, which is ok as the fragments are not deployed.
That is exactly what happens in my app.
Again, I'm sorry that I screwed to follow the example the first time, I
did not mean to waste your time with this. I hope you can reproduce the
behaviour I see here with the two examples, so we can make some progress .
Thanks for all your effort from rainy Bochum, Germany,
Tom
|
|
|
Re: Equinox weaving configuration - Clasloading issue [message #482832 is a reply to message #482831] |
Fri, 28 August 2009 09:39 |
Thomas Haskes Messages: 147 Registered: July 2009 |
Senior Member |
|
|
This is a multi-part message in MIME format.
--------------010308000905010309030401
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: 7bit
And now with the attachements...
Thomas Haskes schrieb:
> Shaun Smith schrieb:
>> Hi Thomas,
>>
>> I'll take a detailed look at your code but right away I can see you
>> are not following the instructions. In the example, all the code is in
>> single bundle with an Activator that implements
>> org.osgi.framework.BundleActivator. Your version is using Eclipse
>> classes.
>
> I missed to check the OSGi Target radio button in the new plugin wizard,
> I see, but I let the activator implement the BundleActivator interface
> instead of extending Plugin (which I thought is the only difference, but
> it seems that it is not). Sorry.
>
> Anyway, I made some progress on the whle issue:
>
> First, I was able to get the example running, attached it as example1.zip.
>
> Second, I was able to reproduce the class loading error with that
> example, it now behaves exactly as may application does. Attached it as
> example2.zip. It would be nice if you could confirm this and tell me if
> that behaviour is a bug, or just cannot work the way I'm using it.
>
> So here is what you need to do to (by using the examples it should be
> just a matter of minutes):
>
> Optional: Unzip the example1.zip attachment and import the project
> "hello.jpa" into a fresh workspace, create a launch configuration with
> the two weaving related fragment and put the
>
> -Dosgi.framework.extensions=org.eclipse.persistence.jpa.equi nox.weaving
>
> parameter into the vm args. See the "Person woven" message. This example
> works.
>
> Next: delete the "hello.jpa" project from the workspace and import the
> two projects "hello.jpa" (which is basically the same project as before,
> except that the "class" child in the persistence.xml now points to
> "hello.jpa.entities.Person" and that the "hello.jpa.entities package is
> imported in the manifest.mf) and "hello.jpa.entities". This setup
> reflects the one my application has, entities just reside in another bundle.
>
> Create a run configuration with everything neccessary for weaving again
> (fragments vm arg etc. don't forget to deploy "hello.jpa.entities"). You
> see that the hello.jpa bundle does not start automatically. If you start
> form the console you get a classloading error "hello.jpa.entities not
> found". Remove the two weaving related fragments from the run
> configuration, leave evrything else as it is. Launch it and see the
> example working (except weaving). The "Person NOT woven" message
> appears, which is ok as the fragments are not deployed.
>
> That is exactly what happens in my app.
>
> Again, I'm sorry that I screwed to follow the example the first time, I
> did not mean to waste your time with this. I hope you can reproduce the
> behaviour I see here with the two examples, so we can make some progress .
>
> Thanks for all your effort from rainy Bochum, Germany,
>
> Tom
>
--------------010308000905010309030401
Content-Type: application/octet-stream;
name="example2.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="example2.zip"
UEsDBAoAAAAAACZRHDsAAAAAAAAAAAAAAAAKAAAAaGVsbG8uanBhL1BLAwQU AAAACAAlURw7
GOREa9AAAAB4AQAAFAAAAGhlbGxvLmpwYS8uY2xhc3NwYXRolZDBagIxEIbP LfQdltydrZfS
w26llC0oVItue5WYDOvUdBIniejbq6VS8SD0Nv/wzcfwV4Pttys2KJE816oP 96pANt4Sd7X6
aF97j2rwdHdbGadjDDotD+HmLyEn2RUrYlsr41kVx2WtvHSAxlGICF82gdOZ zfLghNG0mb9M
xu3zcNxMy0uOOKGwdmBxkTvI9HuJArOk2Wqxn2/tLmA50hs9a3p9eFDlv18K FsF4QRBcZxK0
7y53xPGaKoo5qY7jFdLnFHI6wQviH7gqzyvcA1BLAwQUAAAACAAlURw7GQUj decAAACeAgAA
EgAAAGhlbGxvLmpwYS8ucHJvamVjdL2SwU7EIBCGz5r4DpvehfXmgXaT1ext NybVB0AYuzQw
EKAbH19AqmkaEw/G2/z/zM9HYNju3ejNBXxQFtvmjmybDaCwUuHQNi/Ph9v7 ZtfdXDPn7Qgi
PkIQXrmYppN7xZAb6M6gtSWj44wWnRvCGgMYO0bnKrv1lFAEXajXSWnZOxBZ VfmQohxlcSrL
+oGA0MoFIKOMRFifCn7hJQD++wopwf0wZXaomi4NRleUX3GdBHLkqN4gxP3/ YntxBsP/BFqd
+ckTL04e6vSnWOGf9DQoPJVmppehnwKL78FVZq4z8WsXlvv1AVBLAwQKAAAA AAAlURw7AAAA
AAAAAAAAAAAAFAAAAGhlbGxvLmpwYS8uc2V0dGluZ3MvUEsDBBQAAAAIACVR HDuFMD/UrgAA
AIwBAAAuAAAAaGVsbG8uanBhLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQu Y29yZS5wcmVm
c5WOu2rDQBREe4P/YcH9olVhYoEK2ziQVIb4B9bSSFyzL2ZXAf99lEK15eYy XOYMZ/dJUcdp
VPWHMlVTHRpj1Pnyc1N1VR22G3ROUoZOxAAidMj6F8wSQ2u2m8hRL5VHX3QX ifn4JA6cQ48R
QUtwEvCdeXoW/D9bBHt36NcOFMsR5epsGSJ9a/T+NemTEzv7rmknxlnHa5sz WL56hCKDgC3I
yLU0wuTfZXOcuDj+AVBLAwQUAAAACAAlURw745d8im8AAAB8AAAALgAAAGhl bGxvLmpwYS8u
c2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLmNvcmUucHJlZnM1ybEKwjAQBuA9 kHc4cA9Jp7bQ
QURnwb6Axr8lEi7xrik+vjj4rd/hIomObaWup+BHP4wh0Ol8m6nzfrAGMaeq cFWwQMAR6naI
psJTsKbmtia+Snkhbg6fDfwrnZZ7Vlgj0JJ3OMG7JcGj8TPjn19QSwMECgAA AAAAJ1kcOwAA
AAAAAAAAAAAAAA4AAABoZWxsby5qcGEvYmluL1BLAwQKAAAAAAAnWRw7AAAA AAAAAAAAAAAA
FAAAAGhlbGxvLmpwYS9iaW4vaGVsbG8vUEsDBAoAAAAAACdZHDsAAAAAAAAA AAAAAAAYAAAA
aGVsbG8uanBhL2Jpbi9oZWxsby9qcGEvUEsDBBQAAAAIACdZHDtiCSN7kQQA AFwJAAAnAAAA
aGVsbG8uanBhL2Jpbi9oZWxsby9qcGEvQWN0aXZhdG9yLmNsYXNzjVXrVttG EP6W2F4wgjRO
gThAuIXEpgQ1adMkmNIChUBiLg0UmjRpu5YXI5AlVZIB93bax+gT9Hf6g4Tm nD5AH6rtrGyu
hjrHx9Jqdnbmm292Zv7+58+/ANzBzxwNDJc3pGU5+qYr9AkjMLdF4HgcEYZ3 NsW20C1hF/TF
3KY0Ao4YQ7/jFXTHL5j6uieKcsfxtvTJkp235OFphtiYaZvBOMOFVHqVITLl 5GUcF9CsgaOR
4WLWtOVCqZiT3orIWZIhkXUMYa0Kz1TfVWEk2DB9hrbsGRAzDFE/EF7AMJjK ngtqyrEDuRtk
FIz49K4h3cB0bJ/jXYr8KMDDHY52hkvhRikwLX1W+Bvzwo2jDc2NSDJ0SMMy XV9apr01YljC
9y1H5KWnwuvU0IVuhsaCDKbUFvlIpbNHbkJhJo4e9HH0Eg+ntjT0Y4Ch9eB8 NjTNkKy1UtnK
KGCDGm7gJpHtloiN+6ns6cRlaiXpWlEj0gxNIdUjRHUc7+EWxzBDt1Ld1V3p +aYfSNuQ+tLR
WsMIdIarhidFIKftwAzK88IWBenNCIMyVWZ4fBzTcuCZdqGKKSSZCK4COunl LGOZZtzGBxx3
GG683QkNH+IuZeIMgAwDqbqOyeM9POC4z9BTR1XDKDKV/K14wvYJAN0phpv/ 4+WYInn6GJ9w
UOEMvIW6hk9VMUVzsmDSxZ2ke3JUKFJpm9IPU+XYcUyoCzxNt2TSyamvhxpm McfAfRksUNFQ
nZ2RpfSqiv6xhizmSbeK55TuwZ1aVfgXNSwpWDHDKRbNQB1/omE5RGpYji9V Ap9wUEGOqrKt
1tOJUE0qWs8Wlr4jxTbBOH7f1kgk83F8iWccTxlG6hohUkiuz4YvDV/hOcOV sHTniq4li0SV
P6eU14Uhw3ZyumJrBOlnTfga33J8c6JPLpfJd1GDQI6Ilp6nmle4bTr6EhEa EK1SFKnW8gwt
ldT07jjb0u6LYx0bHIWDvnTyhAYzTJarRJbdiC1yXD2/sLjSu6Zs0L5R6XfU p+v3REqI6zmu
6lLZmo6XUQEU1xlSb1uYDA2yyNBXt57Ics4hgjqz515X0mk/ORHK7sFUeFAL duy89nL8eo6T
0ZblQBhbdCK0xfE9Q289nmgO+YHj0vxYdkqeIWdMhaL1cBKNKE/oA4VF/yiN VvWmOUfPJvrS
6c3oHR16hfhLWjRAo2csFHaghZ5aRQGtuEhvyiwukVaC1hH6uqzMsHkyGyPJ r2/Q9vQVOuaH
E1eG9nB1D9f2cH0tkRp+jaGFW/t4nworkozs4yOGfYwxvMEEHZgajSajic/2 MJOMJKP7eNSA
Q6UFFq4/Z6DzKzSNJxJfvMbab2j9Ay8Sxh7k72hWy01avgxhqRAmCSjQSZF2 oR3X1PCjXw8G
0Us13kfNsJ8azQAe4TpWSfqC5pSBFIpIY5fGyy8YDsMfrwRWDV+tLNKhOYoy bDhERTfycPEd
UTCI5/DgE4JRPESAEtG2XaWwor9D+rsk6ULDv7SIcTCOMkcbx22Oe5wgUXYY fqglGXfD9BDb
p/Okh0DbK5uHQFkVKMOPof5P/wFQSwMEFAAAAAgAJVEcO9JbYPs/AAAAUAAA ABoAAABoZWxs
by5qcGEvYnVpbGQucHJvcGVydGllcyvOLy1KTtXTU7BVKC5K1uflyi8tKSgt AQskZeYBBYCk
XmZeck5pSmoxUNDXNcRR19PPTV8nhpdLARXo8XIBAFBLAwQKAAAAAABVURw7 AAAAAAAAAAAA
AAAAEwAAAGhlbGxvLmpwYS9NRVRBLUlORi9QSwMEFAAAAAgAJlkcO83weUH6 AAAAuwEAAB4A
AABoZWxsby5qcGEvTUVUQS1JTkYvTUFOSUZFU1QuTUZdkDFvgzAQhXd+Bcpc TiVDB6oOqcTQ
SKlQo3Y/zEGOGJvYhob++poCCaq8ve/53bs7oOKSrIu+yFjWKgljeAxeO1VI ig4zvLHtQt6x
oSTct7gIx6HJtWQxgRNJqaG+43W6f5cOJZdMZuE74bhHp83qL9zEfy4flI2z hiSU+DMs9IMu
HRsq0iuJbjSlqmejVUPK+a7Y4zGNYngK9tkuysZC1pES9KnY2XXnt6bVxkUZ ijNW623AJ7Fj
sg9BWPu8K7T3GK9pUwG2KE4EBZl8gLrIxaxrWzGUxp/nW5tzMJeNpu7Jn4WE 5NbSOnSc+pxP
+/XTDV82McSw3QS/UEsDBBQAAAAIACxZHDvH+r759gEAAKcGAAAiAAAAaGVs bG8uanBhL01F
VEEtSU5GL3BlcnNpc3RlbmNlLnhtbK2UTY/TMBCG70j8B5O77RZuIe2B7SKB CkLaC7eVYw+p
i2NHHifp/nucj2az3UVqFnKKPO88Mx6/dlaBR40BrATSdP/ObpI1WyXkVBqL m+QQQpVyfhSN
YFhbJl3JY4hb5LPcUZ6eUE8pbduy9gNzvuDvV6s1//ltfycPUAqqLQYxZKFO sV/cOylCX/26
iuQ62fz/fn2/YidUyfbtGxK/bBajtdWBWFFCbACMcexYibOwF0sjELdTjIEN OmhA9iNSnM34
IJhlVN7FCp1mttpH3lFKbssclAJFduDzB7J3hbaE0kvpCHkYewNpdIVgtP3N gvAFBKpEELnA
OM1GmDpqemDCF5COKpdMeR0dMFHiuTFRiXg4THXAQXTuejeIFxepvZkqdAtp z07j4WmJH6UH
EWATfA3L0TFXUemsBdkZCVmp7VRrvZzXeh3gfwJzEeSBdlhtiwn0dffpZmC9 YJLdeLZkuDnk
phtQ7GWZUZQytAALvs+dKquYQYWNQ+vHTmMpA7hoX0/JzNWhqgMtnXp042TP v+0xOj9avyB3
ELrB4LK9mSGbGWjg0Vqfv3y/TciSnZw54dD5aAL9Eqa7Wa8hISDOx/0PKDhJ qHoPTrT+jrxu
h7qE+P6W1UVnfDsnXc9tQTRzQ4+392VYxp+9ihm/fIdj4Mni9g9QSwMECgAA AAAAJVEcOwAA
AAAAAAAAAAAAAA4AAABoZWxsby5qcGEvc3JjL1BLAwQKAAAAAAAlURw7AAAA AAAAAAAAAAAA
FAAAAGhlbGxvLmpwYS9zcmMvaGVsbG8vUEsDBAoAAAAAABpZHDsAAAAAAAAA AAAAAAAYAAAA
aGVsbG8uanBhL3NyYy9oZWxsby9qcGEvUEsDBBQAAAAIABpZHDuBw7NnBgIA AEgFAAAmAAAA
aGVsbG8uanBhL3NyYy9oZWxsby9qcGEvQWN0aXZhdG9yLmphdmGVU9tuGyEQ fXak/AP1EytZ
/MC2lRzXVSI5sVWnyjOLZ9c4LCDAN1X59w5ms77ErhutEJeZOZw5e7BcvPIK yByUMmxheX57
s/9kbY0L+yADHWSQ4NkEnDc6P0ha8BVnyyAVu+d+/sjtaXDDLBZJH0ALYMOI tH3kGm93+f8m
/uQiGLf9V/5kvz5kYFzFjK8kKx2vYW3cK7tb6pmCvghyxRE1v547MDrAJpzi glDSejiiIYwu
ZXXI5reWYeIMJkUF86sIEu9ymiuG8uM5u99Nn6hbA19JfcThBY9g1vxjuyyU FEQo7j1pZSAI
r6DGP+3JiULkTyzrNHUrI2fEB+4CPVKHiDRnJMydWXsy3AiwQRod6zudOBqL fJ0Ghwx7ZFws
QITvxKI+nnwjGtbkQg7N8oiwy2R2GehFidlg1J9OR+P+j+GvHpKRnlUQBrFd mrXLkeEzcDRL
sOfcRqAukdPBPTGz02HCAQ9wroR22zfT7aWuzuAjMOIi+jmkpk+oI9Nnx7VH aBQRqRdQSd3E
00MkhSka2dJBE8Vj5iE8oY1p984U3Ra0cQzFjMsXCVPXMuyZCGU8tNvyaB+H LAlNNmU7Vz20
VnqIpiy5AJr4pXiPfPBmCmTZTuLpFkM1A+eYRRMEpWm3aXhtVqC/vPejPJBr FU/jZ/ISq1LR
2+0N+WBmYz/l5bf0kHD6C1BLAwQKAAAAAACVUhw7AAAAAAAAAAAAAAAAEwAA AGhlbGxvLmpw
YS5lbnRpdGllcy9QSwMEFAAAAAgAlFIcOxjkRGvQAAAAeAEAAB0AAABoZWxs by5qcGEuZW50
aXRpZXMvLmNsYXNzcGF0aJWQwWoCMRCGzy30HZbcna2X0sNupZQtKFSLbnuV mAzr1HQSJ4no
26ulUvEg9Db/8M3H8FeD7bcrNiiRPNeqD/eqQDbeEne1+mhfe49q8HR3Wxmn Yww6LQ/h5i8h
J9kVK2JbK+NZFcdlrbx0gMZRiAhfNoHTmc3y4ITRtJm/TMbt83DcTMtLjjih sHZgcZE7yPR7
iQKzpNlqsZ9v7S5gOdIbPWt6fXhQ5b9fChbBeEEQXGcStO8ud8TxmiqKOamO 4xXS5xRyOsEL
4h+4Ks8r3ANQSwMEFAAAAAgAlFUcOy9WvkHsAAAApwIAABsAAABoZWxsby5q cGEuZW50aXRp
ZXMvLnByb2plY3S9ksFOxCAQhs+a+A6b3gW9eWC7yWq8aUxWHwBh7E4DAwG6 8fEFpJqmMfFg
vM3/z/x8BEbs3q3ZnCBEdLTtrtlVtwFSTiMN2+7l+f7yptv1F+fCBzeCSncQ VUCf8nR2zwRJ
C/0RjHFs9JIBJUwIUfDaKBPKWZvtXvC5Km47LlbBF+p1QqMPHlRRTd7mqCRd nQZ1YWCgDPoI
bNSJKRdyIU+yBiB8XyEnZBimwo5N86Uh+IryK67XwB4k4RvEtP9f7EEdwco/ gTZnfvLMS1OA
Nv0pVvgnMw1Ij7VZ6HXop8Die2iVmetC/NqF5aJ9AFBLAwQKAAAAAACUUhw7 AAAAAAAAAAAA
AAAAHQAAAGhlbGxvLmpwYS5lbnRpdGllcy8uc2V0dGluZ3MvUEsDBBQAAAAI AJRSHDtEE1KK
rgAAAIwBAAA3AAAAaGVsbG8uanBhLmVudGl0aWVzLy5zZXR0aW5ncy9vcmcu ZWNsaXBzZS5q
ZHQuY29yZS5wcmVmc5WOy4rCQBRE90L+ocF90wkyjEIWM4OCsxLGH+hJKuFK v6juCP69ceHa
uLkUlzrFWR8o6msaVfOparNrzG5j1M/+76waY7bVCp2TlKETMYAIHbK+glli aOtqFTnqZ+XS
F91FYj4+iQPn0GNE0BKcBPxmft8KHs8Wwf479EsHiuWIcnK2DJG+rfXHa9In J3b2XdJOjLOO
1zZnsBx7hCKDgC3IyKU0wuTfZXOc+HS8A1BLAwQUAAAACACUUhw7MeJI8HAA AAB8AAAANwAA
AGhlbGxvLmpwYS5lbnRpdGllcy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRl LmNvcmUucHJl
ZnM1yTEKAjEQBdA+kDsM2IckWOjCFiJaC3oBjX+XSJjEmc3i8cXC177NWTId +kxxR8EP0Q/b
QMfT9UbR+701SCU3hWuCCQJOULdCNFcegzWt9DnzReoLaXH4LOBf6Tjdi8Ia gdaywgnePQse
nZ8F//wCUEsDBAoAAAAAAJVVHDsAAAAAAAAAAAAAAAAXAAAAaGVsbG8uanBh LmVudGl0aWVz
L2Jpbi9QSwMECgAAAAAAlVUcOwAAAAAAAAAAAAAAAB0AAABoZWxsby5qcGEu ZW50aXRpZXMv
YmluL2hlbGxvL1BLAwQKAAAAAACVVRw7AAAAAAAAAAAAAAAAIQAAAGhlbGxv LmpwYS5lbnRp
dGllcy9iaW4vaGVsbG8vanBhL1BLAwQKAAAAAAAbWRw7AAAAAAAAAAAAAAAA KgAAAGhlbGxv
LmpwYS5lbnRpdGllcy9iaW4vaGVsbG8vanBhL2VudGl0aWVzL1BLAwQUAAAA CAAbWRw73CU2
qasBAAAMAwAANgAAAGhlbGxvLmpwYS5lbnRpdGllcy9iaW4vaGVsbG8vanBh L2VudGl0aWVz
L1BlcnNvbi5jbGFzc3VSXWsTURA9N5/tNpra1tQ2am2f0gou+FopiKgEQhUr eb/JDukNm7tl
90b0P/mgoAg++AP8UeK5N5FCs7IwszNzzsyZ2f395+cvAE9x1ERFYe9S0jSL p1c6FuuMM1LE
byUvMttETWFzqj/oONV2Er8ZTWXsFComUVB9Ut/NyZjJ0BRmlMpzazOnncls odAZeOLH+Iqt
TOHEjiXuJ6cKRyWF12Il106SoU7nQlDN6pkobA2up1+43NgJa41nxhp3plDt HQ8JfZElEqGK
zRZauKXQHhgr5/PZSPL3mrJ8m2ys06HOjY+XyZq7NNTZHfx3f86qT8T1kzCq vw6Fey3U0VBo
Mn8eJO70jldFeuj9FiJsEFr8g97trSL9BtFFNs/H8sp4WRuL2U88UmG/5Fgv vcpPpzjkkCo/
ZIUPRTFqMooYrdGvhwoV0NdY42lobzOK6RV9/eQH2l8D7A5tIyTXsEXbWgCw jR16KkdnhfwN
u59vkNul5D3sl5C7X26Qt0vJD/BwST4LixJ98vg7ute6o5DtkLMbOnQWqGUH /+aPwL8WB4Hz
KJzJzzwE/gJQSwMEFAAAAAgAlFIcO9JbYPs/AAAAUAAAACMAAABoZWxsby5q cGEuZW50aXRp
ZXMvYnVpbGQucHJvcGVydGllcyvOLy1KTtXTU7BVKC5K1uflyi8tKSgtAQsk ZeYBBYCkXmZe
ck5pSmoxUNDXNcRR19PPTV8nhpdLARXo8XIBAFBLAwQKAAAAAACUUhw7AAAA AAAAAAAAAAAA
HAAAAGhlbGxvLmpwYS5lbnRpdGllcy9NRVRBLUlORi9QSwMEFAAAAAgAlFUc O/gghcq7AAAA
JwEAACcAAABoZWxsby5qcGEuZW50aXRpZXMvTUVUQS1JTkYvTUFOSUZFU1Qu TUZtjk0LgkAU
Rff+CmmdjyxoYbQJZlFQREL7SZ/2dJyxmdHs3zdi9gHxdu8c7r17LilDY4Mz akNKRn4IM2/T
yFRgsH/BN5uP5MArjHwmLVk04zN+VBclKBngFYVQUNQcsNfo431Xubs1XFBG qEd+wltDGlPW
YdJYZzLZklayckGRv+Mtj1kQwtLbVrXSNjjypOS5qywc6qDu441FmeDU85XO QZmcINNu1l3p
ctUO/etJCAuYTTzW/cb8Wf4EUEsDBAoAAAAAAJRSHDsAAAAAAAAAAAAAAAAX AAAAaGVsbG8u
anBhLmVudGl0aWVzL3NyYy9QSwMECgAAAAAAlFIcOwAAAAAAAAAAAAAAAB0A AABoZWxsby5q
cGEuZW50aXRpZXMvc3JjL2hlbGxvL1BLAwQKAAAAAABDVRw7AAAAAAAAAAAA AAAAIQAAAGhl
bGxvLmpwYS5lbnRpdGllcy9zcmMvaGVsbG8vanBhL1BLAwQKAAAAAAAaWRw7 AAAAAAAAAAAA
AAAAKgAAAGhlbGxvLmpwYS5lbnRpdGllcy9zcmMvaGVsbG8vanBhL2VudGl0 aWVzL1BLAwQU
AAAACAAaWRw7Zt7aLcMAAACMAQAANQAAAGhlbGxvLmpwYS5lbnRpdGllcy9z cmMvaGVsbG8v
anBhL2VudGl0aWVzL1BlcnNvbi5qYXZhfY7BCsIwDEDPG+wfctRLf0AELyK7 iCB4j2uY0dqV
NhuK+O+2rop68FJIeO+lDpsTtgQHMqZTR4eKrLAwhVlVQlXy2XVe4IgDXpQj HzgI2YbUMmHX
2R9iRZY8Cukdmp7+kbUejy3GaFW6fm+4gcZgCLCJZGfhVpXFotbp/S7HjfM8 xBnYCnCKvTdb
8WxbsHim8UaR2wltSWo9mT7ThSfpvc36/YvNkYivY+dHyOmkvPihYw0h0x8/ yKIcOKg0w/zT
vj8AUEsBAhQACgAAAAAAJlEcOwAAAAAAAAAAAAAAAAoAAAAAAAAAAAAQAAAA AAAAAGhlbGxv
LmpwYS9QSwECFAAUAAAACAAlURw7GOREa9AAAAB4AQAAFAAAAAAAAAABACAA AAAoAAAAaGVs
bG8uanBhLy5jbGFzc3BhdGhQSwECFAAUAAAACAAlURw7GQUjdecAAACeAgAA EgAAAAAAAAAB
ACAAAAAqAQAAaGVsbG8uanBhLy5wcm9qZWN0UEsBAhQACgAAAAAAJVEcOwAA AAAAAAAAAAAA
ABQAAAAAAAAAAAAQAAAAQQIAAGhlbGxvLmpwYS8uc2V0dGluZ3MvUEsBAhQA FAAAAAgAJVEc
O4UwP9SuAAAAjAEAAC4AAAAAAAAAAQAgAAAAcwIAAGhlbGxvLmpwYS8uc2V0 dGluZ3Mvb3Jn
LmVjbGlwc2UuamR0LmNvcmUucHJlZnNQSwECFAAUAAAACAAlURw745d8im8A AAB8AAAALgAA
AAAAAAABACAAAABtAwAAaGVsbG8uanBhLy5zZXR0aW5ncy9vcmcuZWNsaXBz ZS5wZGUuY29y
ZS5wcmVmc1BLAQIUAAoAAAAAACdZHDsAAAAAAAAAAAAAAAAOAAAAAAAAAAAA EAAAACgEAABo
ZWxsby5qcGEvYmluL1BLAQIUAAoAAAAAACdZHDsAAAAAAAAAAAAAAAAUAAAA AAAAAAAAEAAA
AFQEAABoZWxsby5qcGEvYmluL2hlbGxvL1BLAQIUAAoAAAAAACdZHDsAAAAA AAAAAAAAAAAY
AAAAAAAAAAAAEAAAAIYEAABoZWxsby5qcGEvYmluL2hlbGxvL2pwYS9QSwEC FAAUAAAACAAn
WRw7Ygkje5EEAABcCQAAJwAAAAAAAAAAACAAAAC8BAAAaGVsbG8uanBhL2Jp bi9oZWxsby9q
cGEvQWN0aXZhdG9yLmNsYXNzUEsBAhQAFAAAAAgAJVEcO9JbYPs/AAAAUAAA ABoAAAAAAAAA
AQAgAAAAkgkAAGhlbGxvLmpwYS9idWlsZC5wcm9wZXJ0aWVzUEsBAhQACgAA AAAAVVEcOwAA
AAAAAAAAAAAAABMAAAAAAAAAAAAQAAAACQoAAGhlbGxvLmpwYS9NRVRBLUlO Ri9QSwECFAAU
AAAACAAmWRw7zfB5QfoAAAC7AQAAHgAAAAAAAAABACAAAAA6CgAAaGVsbG8u anBhL01FVEEt
SU5GL01BTklGRVNULk1GUEsBAhQAFAAAAAgALFkcO8f6vvn2AQAApwYAACIA AAAAAAAAAQAg
AAAAcAsAAGhlbGxvLmpwYS9NRVRBLUlORi9wZXJzaXN0ZW5jZS54bWxQSwEC FAAKAAAAAAAl
URw7AAAAAAAAAAAAAAAADgAAAAAAAAAAABAAAACmDQAAaGVsbG8uanBhL3Ny Yy9QSwECFAAK
AAAAAAAlURw7AAAAAAAAAAAAAAAAFAAAAAAAAAAAABAAAADSDQAAaGVsbG8u anBhL3NyYy9o
ZWxsby9QSwECFAAKAAAAAAAaWRw7AAAAAAAAAAAAAAAAGAAAAAAAAAAAABAA AAAEDgAAaGVs
bG8uanBhL3NyYy9oZWxsby9qcGEvUEsBAhQAFAAAAAgAGlkcO4HDs2cGAgAA SAUAACYAAAAA
AAAAAQAgAAAAOg4AAGhlbGxvLmpwYS9zcmMvaGVsbG8vanBhL0FjdGl2YXRv ci5qYXZhUEsB
AhQACgAAAAAAlVIcOwAAAAAAAAAAAAAAABMAAAAAAAAAAAAQAAAAhBAAAGhl bGxvLmpwYS5l
bnRpdGllcy9QSwECFAAUAAAACACUUhw7GOREa9AAAAB4AQAAHQAAAAAAAAAB ACAAAAC1EAAA
aGVsbG8uanBhLmVudGl0aWVzLy5jbGFzc3BhdGhQSwECFAAUAAAACACUVRw7 L1a+QewAAACn
AgAAGwAAAAAAAAABACAAAADAEQAAaGVsbG8uanBhLmVudGl0aWVzLy5wcm9q ZWN0UEsBAhQA
CgAAAAAAlFIcOwAAAAAAAAAAAAAAAB0AAAAAAAAAAAAQAAAA5RIAAGhlbGxv LmpwYS5lbnRp
dGllcy8uc2V0dGluZ3MvUEsBAhQAFAAAAAgAlFIcO0QTUoquAAAAjAEAADcA AAAAAAAAAQAg
AAAAIBMAAGhlbGxvLmpwYS5lbnRpdGllcy8uc2V0dGluZ3Mvb3JnLmVjbGlw c2UuamR0LmNv
cmUucHJlZnNQSwECFAAUAAAACACUUhw7MeJI8HAAAAB8AAAANwAAAAAAAAAB ACAAAAAjFAAA
aGVsbG8uanBhLmVudGl0aWVzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5wZGUu Y29yZS5wcmVm
c1BLAQIUAAoAAAAAAJVVHDsAAAAAAAAAAAAAAAAXAAAAAAAAAAAAEAAAAOgU AABoZWxsby5q
cGEuZW50aXRpZXMvYmluL1BLAQIUAAoAAAAAAJVVHDsAAAAAAAAAAAAAAAAd AAAAAAAAAAAA
EAAAAB0VAABoZWxsby5qcGEuZW50aXRpZXMvYmluL2hlbGxvL1BLAQIUAAoA AAAAAJVVHDsA
AAAAAAAAAAAAAAAhAAAAAAAAAAAAEAAAAFgVAABoZWxsby5qcGEuZW50aXRp ZXMvYmluL2hl
bGxvL2pwYS9QSwECFAAKAAAAAAAbWRw7AAAAAAAAAAAAAAAAKgAAAAAAAAAA ABAAAACXFQAA
aGVsbG8uanBhLmVudGl0aWVzL2Jpbi9oZWxsby9qcGEvZW50aXRpZXMvUEsB AhQAFAAAAAgA
G1kcO9wlNqmrAQAADAMAADYAAAAAAAAAAAAgAAAA3xUAAGhlbGxvLmpwYS5l bnRpdGllcy9i
aW4vaGVsbG8vanBhL2VudGl0aWVzL1BlcnNvbi5jbGFzc1BLAQIUABQAAAAI AJRSHDvSW2D7
PwAAAFAAAAAjAAAAAAAAAAEAIAAAAN4XAABoZWxsby5qcGEuZW50aXRpZXMv YnVpbGQucHJv
cGVydGllc1BLAQIUAAoAAAAAAJRSHDsAAAAAAAAAAAAAAAAcAAAAAAAAAAAA EAAAAF4YAABo
ZWxsby5qcGEuZW50aXRpZXMvTUVUQS1JTkYvUEsBAhQAFAAAAAgAlFUcO/gg hcq7AAAAJwEA
ACcAAAAAAAAAAQAgAAAAmBgAAGhlbGxvLmpwYS5lbnRpdGllcy9NRVRBLUlO Ri9NQU5JRkVT
VC5NRlBLAQIUAAoAAAAAAJRSHDsAAAAAAAAAAAAAAAAXAAAAAAAAAAAAEAAA AJgZAABoZWxs
by5qcGEuZW50aXRpZXMvc3JjL1BLAQIUAAoAAAAAAJRSHDsAAAAAAAAAAAAA AAAdAAAAAAAA
AAAAEAAAAM0ZAABoZWxsby5qcGEuZW50aXRpZXMvc3JjL2hlbGxvL1BLAQIU AAoAAAAAAENV
HDsAAAAAAAAAAAAAAAAhAAAAAAAAAAAAEAAAAAgaAABoZWxsby5qcGEuZW50 aXRpZXMvc3Jj
L2hlbGxvL2pwYS9QSwECFAAKAAAAAAAaWRw7AAAAAAAAAAAAAAAAKgAAAAAA AAAAABAAAABH
GgAAaGVsbG8uanBhLmVudGl0aWVzL3NyYy9oZWxsby9qcGEvZW50aXRpZXMv UEsBAhQAFAAA
AAgAGlkcO2be2i3DAAAAjAEAADUAAAAAAAAAAQAgAAAAjxoAAGhlbGxvLmpw YS5lbnRpdGll
cy9zcmMvaGVsbG8vanBhL2VudGl0aWVzL1BlcnNvbi5qYXZhUEsFBgAAAAAl ACUAGQsAAKUb
AAAAAA==
--------------010308000905010309030401
Content-Type: application/octet-stream;
name="example1.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="example1.zip"
UEsDBAoAAAAAACZRHDsAAAAAAAAAAAAAAAAKAAAAaGVsbG8uanBhL1BLAwQU AAAACAAlURw7
GOREa9AAAAB4AQAAFAAAAGhlbGxvLmpwYS8uY2xhc3NwYXRolZDBagIxEIbP LfQdltydrZfS
w26llC0oVItue5WYDOvUdBIniejbq6VS8SD0Nv/wzcfwV4Pttys2KJE816oP 96pANt4Sd7X6
aF97j2rwdHdbGadjDDotD+HmLyEn2RUrYlsr41kVx2WtvHSAxlGICF82gdOZ zfLghNG0mb9M
xu3zcNxMy0uOOKGwdmBxkTvI9HuJArOk2Wqxn2/tLmA50hs9a3p9eFDlv18K FsF4QRBcZxK0
7y53xPGaKoo5qY7jFdLnFHI6wQviH7gqzyvcA1BLAwQUAAAACAAlURw7GQUj decAAACeAgAA
EgAAAGhlbGxvLmpwYS8ucHJvamVjdL2SwU7EIBCGz5r4DpvehfXmgXaT1ext NybVB0AYuzQw
EKAbH19AqmkaEw/G2/z/zM9HYNju3ejNBXxQFtvmjmybDaCwUuHQNi/Ph9v7 ZtfdXDPn7Qgi
PkIQXrmYppN7xZAb6M6gtSWj44wWnRvCGgMYO0bnKrv1lFAEXajXSWnZOxBZ VfmQohxlcSrL
+oGA0MoFIKOMRFifCn7hJQD++wopwf0wZXaomi4NRleUX3GdBHLkqN4gxP3/ YntxBsP/BFqd
+ckTL04e6vSnWOGf9DQoPJVmppehnwKL78FVZq4z8WsXlvv1AVBLAwQKAAAA AAAlURw7AAAA
AAAAAAAAAAAAFAAAAGhlbGxvLmpwYS8uc2V0dGluZ3MvUEsDBBQAAAAIACVR HDuFMD/UrgAA
AIwBAAAuAAAAaGVsbG8uanBhLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQu Y29yZS5wcmVm
c5WOu2rDQBREe4P/YcH9olVhYoEK2ziQVIb4B9bSSFyzL2ZXAf99lEK15eYy XOYMZ/dJUcdp
VPWHMlVTHRpj1Pnyc1N1VR22G3ROUoZOxAAidMj6F8wSQ2u2m8hRL5VHX3QX ifn4JA6cQ48R
QUtwEvCdeXoW/D9bBHt36NcOFMsR5epsGSJ9a/T+NemTEzv7rmknxlnHa5sz WL56hCKDgC3I
yLU0wuTfZXOcuDj+AVBLAwQUAAAACAAlURw745d8im8AAAB8AAAALgAAAGhl bGxvLmpwYS8u
c2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLmNvcmUucHJlZnM1ybEKwjAQBuA9 kHc4cA9Jp7bQ
QURnwb6Axr8lEi7xrik+vjj4rd/hIomObaWup+BHP4wh0Ol8m6nzfrAGMaeq cFWwQMAR6naI
psJTsKbmtia+Snkhbg6fDfwrnZZ7Vlgj0JJ3OMG7JcGj8TPjn19QSwMECgAA AAAAalgcOwAA
AAAAAAAAAAAAAA4AAABoZWxsby5qcGEvYmluL1BLAwQKAAAAAABqWBw7AAAA AAAAAAAAAAAA
FAAAAGhlbGxvLmpwYS9iaW4vaGVsbG8vUEsDBAoAAAAAAGpYHDsAAAAAAAAA AAAAAAAYAAAA
aGVsbG8uanBhL2Jpbi9oZWxsby9qcGEvUEsDBBQAAAAIAGpYHDszCA7JjQQA AEoJAAAnAAAA
aGVsbG8uanBhL2Jpbi9oZWxsby9qcGEvQWN0aXZhdG9yLmNsYXNzjVV9WxtF EP8tTXIQDmpT
oQ2FAqWUBIGz1dqWIAoIhTa8WBBsbdXNZQkHl7vzbnmJb49+DD+Bf9c/aLHP 4wfwQ6mzl/CW
UMOTJ7e7M7Mzv5nZmfn7nz//AnAHP2toYLi8IWzbNTY9bkyY0trh0vU1RBje 2eQ73LC5UzAW
c5vClBpiDDdcv2C4QcEy1n1eFLuuv2VMbjt5WxzdZoiNWY4lxxkupNKrDJEp Ny/iuIBmHRoa
GS5mLUcsbBdzwl/hOVswJLKuye1V7lvqXCFG5IYVMLRlz4CYYYgGkvuSoT+V fSuoKdeRYk9m
FIz49J4pPGm5TqDhXfL82MEjjoZ2hkshY1tatjHLg4157sXRhuZGJBmuCNO2 vEDYlrM1Yto8
CGyX54Wv3LumoxNdDI0FIacUi2yk0tljMyExE0c3ejX0UByqWDpuoI+h9fB+ NlTNkKzVUmZl
FLB+HbcwQMH2tika91PZ6sRlainpWlIj0gxNYahHKNRxvIdhDUMMXUp0z/CE H1iBFI4pjKXj
vY4RGAwdpi+4FNOOtGRpnju8IPwZblKmSgyPT2Jalr7lFCqYwiBTgCuATls5 S1mmGbfxgYY7
DLfOd0PHh7hLmTgDIENfqq5hsngPDzTcZ+iuI6pjFJly/lZ87gQEgN4Uw8D/ WDkhSJY+xica
qHD6ziGu41NVTNGcKFj0cCepZI8LRWXIdeKYUO92mh7HpJtTp4c6ZjHHoAVC LlCtUHmdkZz0
qnL6sY4s5km2AqNK9vAprSrYizqWFJqY6RaLllTXn+hYDgGathsIlbcnGqgO R1W1VsrolIcW
1arvcNvYFXyHYJx8ZmtEEvk4vsQzDU8ZRuoqoVgQ3ZgNFx1f4TnD1bBi54qe LYrCkcGcEl7n
pgi7SHWh1hDSz5rwNb7V8M2p9rhcIttFHRw5CrTwfdWzQrblGksUUElhFbxI JZZnaCmnpmfX
3RFObxzr2NBQOGxHp2/osMJkeYpkO43YIsOV+wuLKz1rSgfxzXKbo/ZcvxVS Qjzf9VRzytY0
uoxyoLjOkDpvPTI0iCJDb90yIs05N6daffUrJVb76f5f8g5nwINajGNvayYn X+U4KW1Zltzc
ohuhLg3fM/TUCw9NnUC6Hk2LZXfbN8WMpVC0Hs2dEWUJvSBv6B+lQapWmmr0 baKTQSujNTr4
CvGXtGmATt9YSGxDC331sgBacZFWSigukVSC9hE6XVZq2DypjRHl1zdoe/oK V+aHElcH99Gx
j+v7uLmWSA29xuDC8AHep3qKJCMH+IjhAGMMbzBBF6ZGo8lo4rN9zCQjyegB HjXgSGiBhfvP
Gej+CiVkIvHFa6z9htY/8CJh7kP8jma13aTtyxCWcmGSgAJJ8rQD7TToOnEN XfTrx3Uq7W5q
fT3UX3rxiIbYKvrwAjdh0mQqYgB7SOMXDIbuj5cdq7ivdjbJ0NRECQ5cCkUX 8vDwHYWgH8/h
IyAEo3gIiW0K204lhGX5XZLfI0onGv6lTUwD01DS0KbhtoZ7GkGi7DD8UBtk 3A3TQ9GuztNw
CLS9zDwCyipAGX4M5X/6D1BLAwQUAAAACABqWBw7ckqfLaEBAAD6AgAAJAAA AGhlbGxvLmpw
YS9iaW4vaGVsbG8vanBhL1BlcnNvbi5jbGFzc21S20ojQRA9nauOo/G28X59 igo74KsiiKgE
gopK3juZInaY9MhMR/SffNiFFcGH/YD9KNnqTkRIhoGuqapz6pyumX+fH38B HGK3jJzA7ANF
URx0H2VwQ0ka6zIKXO3KJxlEUneC61aX2kYgp0IBURdYue1ro3rUVKlqRXSq dWykUbFOBaoN
S3wOHnmUSg3pNgX18EhgN6NxSZoSaShsyqhPDCpo2SOB+ca3+p1JlO5wr3Ss tDInAvnaXpOh
Z3FIHvKY9eFjWqDSUJqu+r0WJfeSbdkxcVtGTZkomw+LBfOgUtsbvTZLFDtk 6qFTqE9CYNlH
ESWBMtevnLPF2t64Nwtd9+FhiqHpF/RHbRxpjXt3cT9p04WybqYG2j8tUmA1 Y0fnvGrzcoQd
FsnzZ8vxw6Y4K3PmcTbBcdJ12AHHAvd4I3zOcBZwFByL+++o/HawOT5LrjiB eT79AQALWOTI
zlEdI//B0usIuZJJXsFqBnnt1wh5IZO8gc0h+cRdlNH7B29Y+/btuWqVOUtu QnWAGk6wb3YJ
/LNiy3G23Zqs5g7wH1BLAwQUAAAACAAlURw70ltg+z8AAABQAAAAGgAAAGhl bGxvLmpwYS9i
dWlsZC5wcm9wZXJ0aWVzK84vLUpO1dNTsFUoLkrW5+XKLy0pKC0BCyRl5gEF gKReZl5yTmlK
ajFQ0Nc1xFHX089NXyeGl0sBFejxcgEAUEsDBAoAAAAAAFVRHDsAAAAAAAAA AAAAAAATAAAA
aGVsbG8uanBhL01FVEEtSU5GL1BLAwQUAAAACABwVxw7L5loC/QAAACmAQAA HgAAAGhlbGxv
LmpwYS9NRVRBLUlORi9NQU5JRkVTVC5NRl2QQW+DMAyF7/kVqOfFGj3swLRD J3FYpU5o1XY3
wdDQkNAksLJfvzCgRZNv/vyen31ALUtynn+RddLoJIrhkb12ulDEDzO8se1C 3rGhJNq3uDSO
Q5MbJcUETqSUgfqO1+6hLh0qWUqyC98JL3v0xq60cGv+mwpG2bhrSCKFP8NC P+jSSUtFeiXR
jUOp7qU1uiHtQ1bs8ZjyGJ7YPtvxbAzkPGlBn1p6t8781rTGep6hOGMVrqmD 9ArtXfHAImMr
wBbFiaAgmw9QF7mY+8ZVEkobPvFt7JnNufgUM/kbIaFk62htOq5+zqdT+uld L5sYYthu2C9Q
SwMEFAAAAAgAAVgcO6y3jXTwAQAAngYAACIAAABoZWxsby5qcGEvTUVUQS1J TkYvcGVyc2lz
dGVuY2UueG1srZRNj9MwEIbvSPwHk7vtFm4h7YHtIoEKQtoLt5VjD6mLY0ce J+n+e5yPZrPd
RWoWcoo8M898vXZWgUeNAawE0nT/zm6SNVsl5FQai5vkEEKVcn4UjWBYWyZd yaOJW+Sz2NE9
PaGeQtq2Ze0H5nzB369Wa/7z2/5OHqAUVFsMYohCnWJ/uHdShD77dRnJdW7z //v1/YqdUCXb
t29I/LKZjdZWB2JFCbEAMMaxYyXOjr2zNAJxO9nYjxjsbMaH85lj5V0EBw3z 097yjlJyW+ag
FCiyA58/kL0rtCWUXrqOkIexJJBGVwhG298sCF9AoEoEkQuMQ2yEqaNPD0z4 AtJR5ZIpr+Pi
J0pcFxOViDthqgMOTueqd4Pz4iS1N1OG7iDt2WncmZb4UXoQATbB17AcHWMV lc5akJ1+kJXa
TrnWy3mt1wH+JzAXQR5oh9W2mEBfd59uBtYLItmNuyXDhSE33YBiLcuEopSh BVjwfeyUWcUI
KmwcWj92GlMZwEV9PSUzV4eqDrR06lGNkzz/1mNUfpR+Qe4gdIPBZb2ZIZoZ aOBRWp+/fL9N
yJJOzpxw6HQ0gX4J092s15AQEOfj/gcUnCRUvQYnWn9HXtehLiE+u2V1URnf zknXc1sQzVzQ
4+19GZbxZ69ixi+f32h4crj9A1BLAwQKAAAAAAAlURw7AAAAAAAAAAAAAAAA DgAAAGhlbGxv
LmpwYS9zcmMvUEsDBAoAAAAAACVRHDsAAAAAAAAAAAAAAAAUAAAAaGVsbG8u anBhL3NyYy9o
ZWxsby9QSwMECgAAAAAAUVccOwAAAAAAAAAAAAAAABgAAABoZWxsby5qcGEv c3JjL2hlbGxv
L2pwYS9QSwMEFAAAAAgAQFgcOxtEE6r7AQAAIwUAACYAAABoZWxsby5qcGEv c3JjL2hlbGxv
L2pwYS9BY3RpdmF0b3IuamF2YZVT22rjMBB9TqH/oM2TDEE/4N2FNJvSQtqU TZc+y8rYUSpL
QprcWPrvO45d59Jk02KELjNzdOb4yEv1KgtgMzDGibmX6fXV7tOldwHZXC6l WKA24k7G2YP0
6VFwLTyEqCOCVSCGFjVuHqQl4JB+NvFWKnRh87/8p916n4ELhXCx0CIPsoSV C6/iZmGnBvoK
9VISano5d+AswhqPcUEZ7SMc0FDO5rrYZ/PHanwKjpJQQ0wvImi6K1hpBMlO 5+JuO32hbgVy
qe0Bhxc6gmnz+/wiM1oxZWSMrJWBEbyBEixGdqQQ+1uVdZq6pdNTFlEG5Afq MFXPCcNZcKvI
hmsFHrWzVX2nU43GIt8nGIhhj42zOSj8yTzpE9kPZmHFzuTwJK0QtpnCL5Cf lVgMRv3JZDTu
/xr+7hEZHUUBOKja5Um7HDk5hcCTGvaU2xiUOXHau6fK7HSECiARTpXwbvtW ur26qxP4BEy4
hH4KqekTyorpc5A2EjSJSNQzKLRt4hUrUjZzWSNbfdBE6VhEwEeyMe/euKzb gjaO4ZRx/iLl
ylLjjokyLkK7zQ/21dA547VNxdZV962V7itT5lIBr/nV8R774M06kCRbiScb CpUCQhCeTIDG
8m7T8MotwX5778dEYJcqHsfP7KWqqoverq/YBzM7/yUvv9UPiaD+AVBLAwQU AAAACABRVxw7
yFF+mL8AAACDAQAAIwAAAGhlbGxvLmpwYS9zcmMvaGVsbG8vanBhL1BlcnNv bi5qYXZhfY7B
CsIwDEDPG+wfctTLfkCEXUR2EUHwHtewRWtX2mwo4r/buirqwUsh4b2XWmxO 2BJ0pHVfHi0u
ihyKnM+2dwJHHPFSWnKevZBpqFwZYbku/hBrMuRQSO1RD/SPrNV0rJqiRW6H g+YGGo3ewzaQ
vYFbkWdVreL7XQ4b63gMM7AR4Bh7b3bi2LRg8EzTjSy1I9qS1Go2f6YzRzI4 k/T7F5siAd+E
zo+Q0lF58WPPCnyiP36QROnYl3GG5ad9fwBQSwECFAAKAAAAAAAmURw7AAAA AAAAAAAAAAAA
CgAAAAAAAAAAABAAAAAAAAAAaGVsbG8uanBhL1BLAQIUABQAAAAIACVRHDsY 5ERr0AAAAHgB
AAAUAAAAAAAAAAEAIAAAACgAAABoZWxsby5qcGEvLmNsYXNzcGF0aFBLAQIU ABQAAAAIACVR
HDsZBSN15wAAAJ4CAAASAAAAAAAAAAEAIAAAACoBAABoZWxsby5qcGEvLnBy b2plY3RQSwEC
FAAKAAAAAAAlURw7AAAAAAAAAAAAAAAAFAAAAAAAAAAAABAAAABBAgAAaGVs bG8uanBhLy5z
ZXR0aW5ncy9QSwECFAAUAAAACAAlURw7hTA/1K4AAACMAQAALgAAAAAAAAAB ACAAAABzAgAA
aGVsbG8uanBhLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVm c1BLAQIUABQA
AAAIACVRHDvjl3yKbwAAAHwAAAAuAAAAAAAAAAEAIAAAAG0DAABoZWxsby5q cGEvLnNldHRp
bmdzL29yZy5lY2xpcHNlLnBkZS5jb3JlLnByZWZzUEsBAhQACgAAAAAAalgc OwAAAAAAAAAA
AAAAAA4AAAAAAAAAAAAQAAAAKAQAAGhlbGxvLmpwYS9iaW4vUEsBAhQACgAA AAAAalgcOwAA
AAAAAAAAAAAAABQAAAAAAAAAAAAQAAAAVAQAAGhlbGxvLmpwYS9iaW4vaGVs bG8vUEsBAhQA
CgAAAAAAalgcOwAAAAAAAAAAAAAAABgAAAAAAAAAAAAQAAAAhgQAAGhlbGxv LmpwYS9iaW4v
aGVsbG8vanBhL1BLAQIUABQAAAAIAGpYHDszCA7JjQQAAEoJAAAnAAAAAAAA AAAAIAAAALwE
AABoZWxsby5qcGEvYmluL2hlbGxvL2pwYS9BY3RpdmF0b3IuY2xhc3NQSwEC FAAUAAAACABq
WBw7ckqfLaEBAAD6AgAAJAAAAAAAAAAAACAAAACOCQAAaGVsbG8uanBhL2Jp bi9oZWxsby9q
cGEvUGVyc29uLmNsYXNzUEsBAhQAFAAAAAgAJVEcO9JbYPs/AAAAUAAAABoA AAAAAAAAAQAg
AAAAcQsAAGhlbGxvLmpwYS9idWlsZC5wcm9wZXJ0aWVzUEsBAhQACgAAAAAA VVEcOwAAAAAA
AAAAAAAAABMAAAAAAAAAAAAQAAAA6AsAAGhlbGxvLmpwYS9NRVRBLUlORi9Q SwECFAAUAAAA
CABwVxw7L5loC/QAAACmAQAAHgAAAAAAAAABACAAAAAZDAAAaGVsbG8uanBh L01FVEEtSU5G
L01BTklGRVNULk1GUEsBAhQAFAAAAAgAAVgcO6y3jXTwAQAAngYAACIAAAAA AAAAAQAgAAAA
SQ0AAGhlbGxvLmpwYS9NRVRBLUlORi9wZXJzaXN0ZW5jZS54bWxQSwECFAAK AAAAAAAlURw7
AAAAAAAAAAAAAAAADgAAAAAAAAAAABAAAAB5DwAAaGVsbG8uanBhL3NyYy9Q SwECFAAKAAAA
AAAlURw7AAAAAAAAAAAAAAAAFAAAAAAAAAAAABAAAAClDwAAaGVsbG8uanBh L3NyYy9oZWxs
by9QSwECFAAKAAAAAABRVxw7AAAAAAAAAAAAAAAAGAAAAAAAAAAAABAAAADX DwAAaGVsbG8u
anBhL3NyYy9oZWxsby9qcGEvUEsBAhQAFAAAAAgAQFgcOxtEE6r7AQAAIwUA ACYAAAAAAAAA
AQAgAAAADRAAAGhlbGxvLmpwYS9zcmMvaGVsbG8vanBhL0FjdGl2YXRvci5q YXZhUEsBAhQA
FAAAAAgAUVccO8hRfpi/AAAAgwEAACMAAAAAAAAAAQAgAAAATBIAAGhlbGxv LmpwYS9zcmMv
aGVsbG8vanBhL1BlcnNvbi5qYXZhUEsFBgAAAAAUABQArQUAAEwTAAAAAA==
--------------010308000905010309030401--
|
|
| | |
Re: Equinox weaving configuration - Clasloading issue [message #483414 is a reply to message #483323] |
Tue, 01 September 2009 14:23 |
Shaun Smith Messages: 197 Registered: July 2009 |
Senior Member |
|
|
Hi Thomas,
There are two problems with your example #2 where you spread the code
and config files across two bundles. The first, and most critical is that
you don't provide the required classloader as a property when you create
your EntityManagerFactory. You have:
EntityManagerFactory emf = Persistence
.createEntityManagerFactory("hello.jpa");
But the byte code weaving example says you should have something like:
Map<String,Object> properties = new HashMap<String, Object>();
properties.put(PersistenceUnitProperties.CLASSLOADER,
this.getClass().getClassLoader());
emf = Persistence.createEntityManagerFactory("comics", properties);
In the weaving example, the classloader that is passed is the one for the
Entities. In the example, since all the code is on the same bundle the
classloader for the Activator is passed.
The second issue, which is related to the first one, is packaging.
EclipseLink's OSGi support for JPA supports lots of different packaging
options but the use of weaving does limit those options. To perform
weaving EclipseLink uses a temporary classloader. This temp loader
examines the Entities (identified through the persistence.xml) to
determine how to weave the classes and is then discarded. Later, when you
load the classes, the weaving is performed. EclipseLink currently builds
a temp loader based on the classloader that is passed as a property to
createEntityManagerFactory.
In your code, you've separated the Entities and persistence.xml and have
no way to get a handle to the actual classloader of your Entities. For
now, if you want to use weaving, I would recommend putting the Entities,
persistence.xml, any orm.xml files, and the EntityManagerFactory creation
code in the same bundle so all classes and config files are loadable by
the same classloader.
This situation will be improving in future releases of EclipseLink. We
have a few initiatives on-going. We're investigating a non-temploader
approach to weaving, it may be possibile to leverage the work of the
Equinox Aspects team to implement EclipseLink's weaving in OSGi, and the
OSGi JPA RFC 143 will introduce standards around how JPA should work in
OSGi. So there is quite a lot going on in this area but it is still in
process.
Until then, I'm afraid if you want to use dynamic weaving you'll have to
live with the current restrictions. Your other alternative is to use
static weaving.
Hope this helps,
--Shaun
|
|
|
Re: Equinox weaving configuration - Clasloading issue [message #483571 is a reply to message #483414] |
Wed, 02 September 2009 07:03 |
Thomas Haskes Messages: 147 Registered: July 2009 |
Senior Member |
|
|
Shaun, Thanks for all the information, the situation is much clearer to
me no.
> This situation will be improving in future releases of EclipseLink. We
> have a few initiatives on-going. We're investigating a non-temploader
> approach to weaving, it may be possibile to leverage the work of the
> Equinox Aspects team to implement EclipseLink's weaving in OSGi, and the
> OSGi JPA RFC 143 will introduce standards around how JPA should work in
> OSGi. So there is quite a lot going on in this area but it is still in
> process.
I hope so, and will be following what comes up in future releases. It
seems to me that the JPA standard is not really aware of the modularity
the OSGi Envrionment enables, and it is well known that the classloading
algorithms are the most complicated part when it comes to deploy
osgi-fied versions of java libraries.
> Until then, I'm afraid if you want to use dynamic weaving you'll have to
> live with the current restrictions. Your other alternative is to use
> static weaving.
While our product is designed to be modular, I can't have all the
entities in one bundle right now (we are not happy about having the
persistence.xml with the list of ALL entities in just one bundle that
has to be adjusted every time a new bundle with new enitities is
deployed, but since it is possible to do that without recompiling and
deploing, we can live with that restriction).
I'll stick with static weaving then. Although it complicates the
doployment process a little bit, this seems to be the best workaround
for my situation right now - thanks for the hint. Btw I must say that
besides those limitations about weaving the Eclipselink OSGi Bundles
work really good - great work.
Tom
|
|
|
Goto Forum:
Current Time: Sat Jan 25 00:30:37 GMT 2025
Powered by FUDForum. Page generated in 0.04752 seconds
|