Bug 51660 - Missing xbean.jar file causes long pauses when launching with JWS. Old xmlbeans-2.3.0.jar needs replacing with xbeans.jar and jsr173_1.0_api.jar
Summary: Missing xbean.jar file causes long pauses when launching with JWS. Old xmlbea...
Status: RESOLVED WORKSFORME
Alias: None
Product: POI
Classification: Unclassified
Component: XSSF (show other bugs)
Version: 3.8-dev
Hardware: PC All
: P2 normal (vote)
Target Milestone: ---
Assignee: POI Developers List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-08-15 15:58 UTC by Keith Woodward
Modified: 2015-08-23 19:42 UTC (History)
0 users



Attachments
jnlp file that works, no pauses and which uses the new xbeans.jar (1.31 KB, application/x-java-jnlp-file)
2011-08-15 16:24 UTC, Keith Woodward
Details
old jnlp file that has the long 30 second pause. Uses the old xmlbeans-2.3.0.jar, rather than the newer xbeans.jar (1.27 KB, application/x-java-jnlp-file)
2011-08-15 16:26 UTC, Keith Woodward
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Keith Woodward 2011-08-15 15:58:07 UTC
Hi,

I'm deploying a POI program using Java Web Start (JWS, which uses .jnlp files). It worked, but there was a long (30 second) pause. The pause only occured when launching using JWS, and it occurred at the moment POI code was called. When launching my app locally there was no pause. In the java console, i typed '5' to get the verbose JWS output to see what was happening during the pause. The console showed that JWS was looking for an 'xbean.jar' file, repeatedly for the whole 30 seconds. I couldn't figure out why, since the POI binary distribution had no xbean.jar file, it only included the xmlbeans-2.3.0.jar file. My own code did not include any reference to xbeans.jar, and in my jnlp file there was no reference to it.

After hours of debugging, I traced the problem to POI's use of xmlbeans-2.3.0.jar. When I replaced that jar with xbeans.jar and jsr173_1.0_api.jar from the latest xmlbeans-2.5.0.zip of binaries then the webstart app worked fine without any pauses. What led me to try this was the directions given on this site:
http://systeminetwork.com/article/new-poi-release-brings-excels-xlsx-support-rpg

To fix this problem, the POI downloadable distribution of binaries should drop xmlbeans-2.3.0.jar and include both xbeans.jar and jsr173_1.0_api.jar from the latest xmlbeans binaries. I guess that devs will not detect this bug that i describe unless they try running POI as a JWS app. 

I suspect that the anomally is due to POI devs using the up-to-date xbeans.jar file in their code which was used to compile the POI jars, but then that xbeans.jar file was not included in the downloadable binary distribution that users like me download. We get the old xmlbeans-2.3.0.jar file which is out of date and causes the problem that I encountered.

By the way, POI is an extremely useful project and I want to thank all of you devs for your hard work. Much appreciated.

Best wishes,
Keith
Comment 1 Nick Burch 2011-08-15 16:02:52 UTC
Everything is built and run against xmlbean 2.3, so we all use the same version you do. I'd check your JWS setup, as you might not be referencing the correct files

We still compile for a fairly old version of xmlbeans as there are lots of people using the 2.3 runtime already in their code. If we moved to 2.5 then they'd be unable to use POI without upgrading, which they're often unable to do
Comment 2 Keith Woodward 2011-08-15 16:24:17 UTC
Created attachment 27387 [details]
jnlp file that works, no pauses and which uses the new xbeans.jar
Comment 3 Keith Woodward 2011-08-15 16:26:47 UTC
Created attachment 27388 [details]
old jnlp file that has the long 30 second pause. Uses the old xmlbeans-2.3.0.jar, rather than the newer xbeans.jar

Thanks Nick for your reply, I understand the need to keep the old version.

But somewhere, the new xbeans.jar file is being referenced.

In the previous attachement is the new JWS jnlp file that works, no pauses (deal.jnlp).

Attached here is the old one which pauses for 30 seconds (dealOld.jnlp).

You can see it looking for xbeans.jar if you enable the JWS console to be seen and type '5'. You see the following output (ignore the exception, that is my code which throws that and is irrelevant to this problem):


Java Web Start 1.6.0_26
Using JRE version 1.6.0_26-b03 Java HotSpot(TM) Client VM
User home directory = C:\Users\Keith
----------------------------------------------------
c:   clear console window
f:   finalize objects on finalization queue
g:   garbage collect
h:   display this help message
m:   print memory usage
o:   trigger logging
p:   reload proxy configuration
q:   hide console
r:   reload policy configuration
s:   dump system and deployment properties
t:   dump thread list
v:   dump thread stack
0-5: set trace level to <n>
----------------------------------------------------
Trace level set to 5: all ... completed.
security: User has granted the priviledges to the code for this session only
security: Adding certificate in Deployment session certificate store
security: Added certificate in Deployment session certificate store
security: Saving certificates in Deployment session certificate store
security: Saved certificates in Deployment session certificate store
security: Mark trusted: http://www.keithwoodward.com/deal/webstartOld/dealOld.jnlp
basic: LD - All JAR files signed: http://www.keithwoodward.com/deal/webstartOld/dealOld.jnlp
basic: passing security checks; secureArgs:true, allSigned:false
basic: trusted app: true, -secure=false
basic: DefaultMatchJRE: 
  JREDesc:    JREDesc[version 1.6.0_26, heap=-1--1, args=null, href=http://java.sun.com/products/autodl/j2se, sel=true, null, null]
  JREInfo:    JREInfo for index 0:
    platform is: 1.6
    product is: 1.6.0_26
    location is: http://java.sun.com/products/autodl/j2se
    path is: C:\Program Files (x86)\Java\jre6\bin\javaw.exe
    args is: null
    native platform is: Windows, x86 [ x86, 32bit ]
    enabled is: true
    registered is: true
    system is: true

  Init Heap:  -1
  Max  Heap:  67108864
  Satisfying: true, true
  SatisfyingVersion: true
  SatisfyingJVMArgs: true, true
  SatisfyingSecure: true
  Selected JVMParam: [JVMParameters: isSecure: true, args: ]
  Running  JVMParam: [JVMParameters: isSecure: true, args: ]
basic: continuing launch in this VM
basic: Main-class: deal.Main
cache:  Read manifest for http://www.keithwoodward.com/deal/webstartOld/lib/xmlbeans-2.3.0.jar: read=272 full=63538
security: JAVAWS AppPolicy Permission requested for: http://www.keithwoodward.com/deal/webstartOld/lib/xmlbeans-2.3.0.jar
security: Istrusted: http://www.keithwoodward.com/deal/webstartOld/dealOld.jnlp true
cache:  Read manifest for http://www.keithwoodward.com/deal/webstartOld/lib/dom4j-1.6.1.jar: read=229 full=6330
security: JAVAWS AppPolicy Permission requested for: http://www.keithwoodward.com/deal/webstartOld/lib/dom4j-1.6.1.jar
security: Istrusted: http://www.keithwoodward.com/deal/webstartOld/dealOld.jnlp true
cache:  Read manifest for http://www.keithwoodward.com/deal/webstartOld/lib/poi-3.8-beta3-20110606.jar: read=219 full=38969
security: JAVAWS AppPolicy Permission requested for: http://www.keithwoodward.com/deal/webstartOld/lib/poi-3.8-beta3-20110606.jar
security: Istrusted: http://www.keithwoodward.com/deal/webstartOld/dealOld.jnlp true
cache:  Read manifest for http://www.keithwoodward.com/deal/webstartOld/lib/poi-ooxml-3.8-beta3-20110606.jar: read=219 full=8728
security: JAVAWS AppPolicy Permission requested for: http://www.keithwoodward.com/deal/webstartOld/lib/poi-ooxml-3.8-beta3-20110606.jar
security: Istrusted: http://www.keithwoodward.com/deal/webstartOld/dealOld.jnlp true
cache:  Read manifest for http://www.keithwoodward.com/deal/webstartOld/lib/poi-ooxml-schemas-3.8-beta3-20110606.jar: read=219 full=140701
security: JAVAWS AppPolicy Permission requested for: http://www.keithwoodward.com/deal/webstartOld/lib/poi-ooxml-schemas-3.8-beta3-20110606.jar
security: Istrusted: http://www.keithwoodward.com/deal/webstartOld/dealOld.jnlp true
cache:  Read manifest for http://www.keithwoodward.com/deal/webstartOld/lib/stax-api-1.0.1.jar: read=192 full=1705
security: JAVAWS AppPolicy Permission requested for: http://www.keithwoodward.com/deal/webstartOld/lib/stax-api-1.0.1.jar
security: Istrusted: http://www.keithwoodward.com/deal/webstartOld/dealOld.jnlp true
cache:  Read manifest for http://www.keithwoodward.com/deal/webstartOld/deal.jar: read=261 full=2033
security: JAVAWS AppPolicy Permission requested for: http://www.keithwoodward.com/deal/webstartOld/deal.jar
security: Istrusted: http://www.keithwoodward.com/deal/webstartOld/dealOld.jnlp true
security: JAVAWS AppPolicy Permission requested for: http://www.keithwoodward.com/deal/webstartOld/deal.jar
security: Istrusted: http://www.keithwoodward.com/deal/webstartOld/dealOld.jnlp true
QuestionPane: tmpdirString == C:\Users\Keith\AppData\Local\Temp\
QuestionCache: chNum == 1, qNum == 1, questionAndChapterExist(qNum, chNum) == true
security: JAVAWS AppPolicy Permission requested for: http://www.keithwoodward.com/deal/webstartOld/lib/poi-ooxml-3.8-beta3-20110606.jar
security: Istrusted: http://www.keithwoodward.com/deal/webstartOld/dealOld.jnlp true
security: JAVAWS AppPolicy Permission requested for: http://www.keithwoodward.com/deal/webstartOld/lib/poi-3.8-beta3-20110606.jar
security: Istrusted: http://www.keithwoodward.com/deal/webstartOld/dealOld.jnlp true
security: JAVAWS AppPolicy Permission requested for: http://www.keithwoodward.com/deal/webstartOld/lib/xmlbeans-2.3.0.jar
security: Istrusted: http://www.keithwoodward.com/deal/webstartOld/dealOld.jnlp true
security: JAVAWS AppPolicy Permission requested for: http://www.keithwoodward.com/deal/webstartOld/lib/poi-ooxml-schemas-3.8-beta3-20110606.jar
security: Istrusted: http://www.keithwoodward.com/deal/webstartOld/dealOld.jnlp true
security: JAVAWS AppPolicy Permission requested for: http://www.keithwoodward.com/deal/webstartOld/lib/dom4j-1.6.1.jar
security: Istrusted: http://www.keithwoodward.com/deal/webstartOld/dealOld.jnlp true
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
network: Connecting http://www.keithwoodward.com/deal/webstartOld/lib/xbean.jar with proxy=DIRECT
network: Connecting socket://www.keithwoodward.com:80 with proxy=DIRECT
QuestionCache: chNum == 1, qNum == 2, questionAndChapterExist(qNum, chNum) == true
QuestionCache: chNum == 1, qNum == 3, questionAndChapterExist(qNum, chNum) == true
java.io.IOException: Stream closed
	at java.io.BufferedInputStream.getInIfOpen(Unknown Source)
	at java.io.BufferedInputStream.fill(Unknown Source)
	at java.io.BufferedInputStream.read1(Unknown Source)
	at java.io.BufferedInputStream.read(Unknown Source)
	at java.io.FilterInputStream.read(Unknown Source)
	at java.io.PushbackInputStream.read(Unknown Source)
	at java.util.zip.ZipInputStream.readFully(Unknown Source)
	at java.util.zip.ZipInputStream.readLOC(Unknown Source)
	at java.util.zip.ZipInputStream.getNextEntry(Unknown Source)
	at org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource.<init>(ZipInputStreamZipEntrySource.java:51)
	at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:82)
	at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:224)
	at org.apache.poi.util.PackageHelper.open(PackageHelper.java:39)
	at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:190)
	at deal.Question.getAnswer(Question.java:55)
	at deal.QuestionCache.makeQuestionList(QuestionCache.java:48)
	at deal.QuestionCache.<init>(QuestionCache.java:22)
	at deal.QuestionPane.<init>(QuestionPane.java:65)
	at deal.DealFrame.<init>(DealFrame.java:88)
	at deal.Main$1.run(Main.java:17)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$000(Unknown Source)
	at java.awt.EventQueue$1.run(Unknown Source)
	at java.awt.EventQueue$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
QuestionCache: chNum == 2, qNum == 1, questionAndChapterExist(qNum, chNum) == true
QuestionPane: continueCounter == 0
: e.getComponent().getSize() == java.awt.Dimension[width=250,height=250]
: e.getComponent().getSize() == java.awt.Dimension[width=250,height=250]

Cheers,
Keith
Comment 4 Dominik Stadler 2015-08-23 19:42:40 UTC
You can use XMLBeans 2.6 since a few versions of POI so I think this one is fixed since that was implemented.