[
http://opensource.atlassian.com/projects/hibernate/browse/EJB-242?page=co...
]
Michał Kostrzewa commented on EJB-242:
--------------------------------------
To my suprise I noticed I didn't comment this bug after I found a workaround some time
ago - I lived in conciousness of having posted this, I'm terribly sorry it may have
saved Wolfgang some investigations... :(
As far as I rememember the fix provided by Emmanuel didn't work for me (but I'm
only 99% sure about it, since I tried it some time ago)
I solved it exactely the way Wolfgang did, actually I did it earlier so I even survived
one ecplipse RCP upgrade which happily spoiled nothing. I'd also like to acknowledge
that this solution works when application is exported as Java Web Start application, which
is non-obvious, yet works.
Eclipse RCP + InputStreamZippedJarVisitor problem
-------------------------------------------------
Key: EJB-242
URL:
http://opensource.atlassian.com/projects/hibernate/browse/EJB-242
Project: Hibernate Entity Manager
Type: Bug
Components: EntityManager
Versions: 3.2.0.ga
Environment: Hibernate 3.2.0 GA, postgres (but I guess not relevant here)
Reporter: Michał Kostrzewa
Assignee: Emmanuel Bernard
Hi,
Max from user list kindly redirected me to fill a bug here. Here it goes as I described
it on list. I didn't attached a test case b/c doing it is non-trivial, maybe
you'll just know what is the problem and I provided a patch that works for me. But if
test case is needed - I'll do it.
--------------
I'm having problems with bundling hibernate and my ejb model in eclipse RCP
application. I managed to solve all classloading problems but one, related to
InputStreamZippedJarVisitor class.
Simplifying things I have:
hibernate plugin which registers itself for buddy classloading policy
dbmodel plugin which depends on hibernate and is a buddy of hibernate
application plugin which depends on hibernate and dbmodel and is a buddy of hibernate.
This application plugin has hibernate.cfg.xml in self.
When I run this project from eclipse IDE, all is fine except the warning message in logs
while creating EntityManager:
2006-10-20 09:07:23 org.hibernate.ejb.packaging.InputStreamZippedJarVisitor
doProcessElements
WARNING: Unable to find file (ignored): bundleresource://101
java.io.FileNotFoundException: C:\Documents and
Settings\mkostrze\sv-head2\com.pentacomp.dbmodel (Access denied)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at
org.eclipse.osgi.framework.util.SecureAction.getFileInputStream(SecureAction.java:99)
at
org.eclipse.osgi.baseadaptor.bundlefile.FileBundleEntry.getInputStream(FileBundleEntry.java:50)
at
org.eclipse.osgi.framework.internal.core.BundleURLConnection.connect(BundleURLConnection.java:53)
at
org.eclipse.osgi.framework.internal.core.BundleURLConnection.getInputStream(BundleURLConnection.java:99)
at java.net.URL.openStream(URL.java:1007)
at
org.hibernate.ejb.packaging.InputStreamZippedJarVisitor.doProcessElements(InputStreamZippedJarVisitor.java:33)
at org.hibernate.ejb.packaging.JarVisitor.getMatchingEntries(JarVisitor.java:215)
at
org.hibernate.ejb.Ejb3Configuration.addMetadataFromVisitor(Ejb3Configuration.java:253)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:229)
at
org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:120)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
at
com.pentacomp.dicom.viewer.ViewerContstants.createEntityManager(ViewerContstants.java:170)
at
com.pentacomp.dicom.viewer.DicomViewerMainFrame$InitRepositoriesTask.call(DicomViewerMainFrame.java:146)
I suppose hibernate tries to inspect the model jar for some reason, but in IDE this jar
location is resolved to directory containing the plugin.
But things get worse when I export the project into java webstart application. I'm
getting NullPointerException instead of warning in the same place. I investigated the
source and the problem is here:
protected void doProcessElements() throws IOException {
JarInputStream jis;
try {
jis = new JarInputStream( jarUrl.openStream() );
}
catch (IOException ze) {
log.warn( "Unable to find file (ignored): " + jarUrl, ze );
return;
}
The jarUrl is a bundleresource:// url which resolves to DirZipBundleEntry which in turn
returns null in getInputStream(). Thus JarInputStream thows NPE.
Here's what I've tried to solve this:
- configure the dbmodel to be unpacked or packed after install
- tried dbmodel with jar inside or with unpacked classes inside
- set hibernate.archive.autodetection to 'none'. (I did it passing parameters map
to createEntityManager method)
- change the hibernate sources and replace IOException with Exception in doProcessElement
method. This one worked
I guess most likely I did something wrong to my deploy - any ideas please? But if not,
perhaps such a change in code may make hibernate more robust (?)
Hibernate version: 3.2.0 GA
best regards,
Michal Kostrzewa
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira