persistence@glassfish.java.net

Re: Cannot use TopLink essentials in Eclipse RCP Plugin application

From: Sanjeeb Kumar Sahoo <Sanjeeb.Sahoo_at_Sun.COM>
Date: Thu, 19 Oct 2006 22:16:16 +0530

Hi Martin,

You right, the code currently expects the protocol to be file or jar on
Java SE platform. Can you please file a bug?

Thanks,
Sahoo
Martin Bayly wrote:
> Hi all
>
> In digging around for some more info on this issue I came across the
> java.net Glassfish forum. Is that a better place to ask questions
> like mine below?
> After seeing the posts on the persistence_at_glassfish.dev.java.net list
> over the last few days, I'm getting the impression that this is
> intended more as an internal list for the developers on the project.
> Sorry about that. I'll ask future questions over on the Glassfish forum.
> Incidentally, I'm using build v2-b21. I did find some similar
> references to my problem in the Glassfish forum, and references to an
> issue #713 so I'll do some more reading around that. However, I don't
> quite see how this can work given the nature of the URL returned by
> Eclipse. Maybe if I jar'd up the code it would work. Normally, when
> developing/debugging plug-ins in Eclipse the plug-in code is not jar'd.
>
> Thanks
> Martin
>
> Martin Bayly wrote:
>> Hi
>>
>> I've been trying to use the TopLink essentials JPA implementation in
>> an Eclipse Rich Client Platform application but I get the exception
>> below when I try and create an EntityManagerFactory.
>>
>> It seems that this is because the Eclipse plug-in environment
>> classloaders create URLs of the following form:
>>
>> bundleresource://3/META-INF/persistence.xml
>>
>> For example the above URL would be returned by a call to:
>>
>> ClassLoader loader = Thread.currentThread().getContextClassLoader();
>> Enumeration<URL> resources =
>> loader.getResources("META-INF/persistence.xml");
>>
>> There is code in PersistenceUnitProcessor that is using the context
>> class loader in this way to find resources for the persistence units
>> and this fails with the exception below because it is seems like it
>> is only expecting URLs with a file or jar protocol.
>>
>> [Out of interest the Hibernate JPA implementation seems to handle
>> this okay]
>>
>> Would you consider this a bug, or is it possible I'm doing something
>> wrong?
>>
>> Thanks
>> Martin
>>
>> Exception:
>>
>> java.lang.NullPointerException
>> at
>> oracle.toplink.essentials.ejb.cmp3.persistence.ArchiveFactoryImpl.createArchive(ArchiveFactoryImpl.java:64)
>>
>> at
>> oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.findPersistenceArchives(PersistenceUnitProcessor.java:207)
>>
>> at
>> oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.findPersistenceArchives(PersistenceUnitProcessor.java:190)
>>
>> at
>> oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializer.initialize(JavaSECMPInitializer.java:239)
>>
>> at
>> oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializer.initializeFromMain(JavaSECMPInitializer.java:278)
>>
>> at
>> oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializer.getJavaSECMPInitializer(JavaSECMPInitializer.java:81)
>>
>> at
>> oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createEntityManagerFactory(EntityManagerFactoryProvider.java:118)
>>
>> at
>> javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
>>
>> at
>> javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)
>>
>> at
>> testjpaplugintoplink.View$ViewContentProvider.getElements(View.java:77)
>> at
>> org.eclipse.jface.viewers.StructuredViewer.getRawChildren(StructuredViewer.java:927)
>>
>> at
>> org.eclipse.jface.viewers.TableViewer.getRawChildren(TableViewer.java:1279)
>>
>> at
>> org.eclipse.jface.viewers.StructuredViewer.getFilteredChildren(StructuredViewer.java:868)
>>
>> at
>> org.eclipse.jface.viewers.StructuredViewer.getSortedChildren(StructuredViewer.java:984)
>>
>> at
>> org.eclipse.jface.viewers.TableViewer.internalRefreshAll(TableViewer.java:870)
>>
>> at
>> org.eclipse.jface.viewers.TableViewer.internalRefresh(TableViewer.java:818)
>>
>> at
>> org.eclipse.jface.viewers.TableViewer.internalRefresh(TableViewer.java:807)
>>
>> at
>> org.eclipse.jface.viewers.StructuredViewer$7.run(StructuredViewer.java:1388)
>>
>> at
>> org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1323)
>>
>> at
>> org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1386)
>>
>> at
>> org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1345)
>>
>> at
>> org.eclipse.jface.viewers.TableViewer.inputChanged(TableViewer.java:767)
>> at
>> org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:250)
>> at
>> org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1542)
>>
>> at testjpaplugintoplink.View.createPartControl(View.java:189)
>> at
>> org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:332)
>>
>> at
>> org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:197)
>> at
>> org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:566)
>>
>> at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:290)
>> at org.eclipse.ui.internal.ViewPane.setVisible(ViewPane.java:525)
>> at
>> org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:140)
>>
>> at
>> org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:268)
>>
>> at
>> org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65)
>>
>> at
>> org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:394)
>>
>> at
>> org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1144)
>>
>> at
>> org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1097)
>> at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:1311)
>> at
>> org.eclipse.ui.internal.PartStack.createControl(PartStack.java:601)
>> at
>> org.eclipse.ui.internal.PartStack.createControl(PartStack.java:532)
>> at
>> org.eclipse.ui.internal.PartSashContainer.createControl(PartSashContainer.java:562)
>>
>> at
>> org.eclipse.ui.internal.PerspectiveHelper.activate(PerspectiveHelper.java:244)
>>
>> at
>> org.eclipse.ui.internal.Perspective.onActivate(Perspective.java:815)
>> at
>> org.eclipse.ui.internal.WorkbenchPage.onActivate(WorkbenchPage.java:2429)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchWindow$6.run(WorkbenchWindow.java:2616)
>> at
>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
>> at
>> org.eclipse.ui.internal.WorkbenchWindow.setActivePage(WorkbenchWindow.java:2597)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchWindow.busyOpenPage(WorkbenchWindow.java:658)
>>
>> at
>> org.eclipse.ui.internal.Workbench.busyOpenWorkbenchWindow(Workbench.java:795)
>>
>> at
>> org.eclipse.ui.internal.Workbench.doOpenFirstTimeWindow(Workbench.java:1437)
>>
>> at
>> org.eclipse.ui.internal.Workbench.openFirstTimeWindow(Workbench.java:1388)
>>
>> at
>> org.eclipse.ui.internal.WorkbenchConfigurer.openFirstTimeWindow(WorkbenchConfigurer.java:190)
>>
>> at
>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:708)
>>
>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
>> at
>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:419)
>>
>> at
>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
>> at testjpaplugintoplink.Application.run(Application.java:18)
>> at
>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
>>
>> at
>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
>>
>> at
>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
>>
>> at
>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
>>
>> at
>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
>>
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>
>> at java.lang.reflect.Method.invoke(Method.java:585)
>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
>> at org.eclipse.core.launcher.Main.run(Main.java:977)
>> at org.eclipse.core.launcher.Main.main(Main.java:952)
>>