Re: Working around (Weblogic) StAX issues

2008-08-18 Thread David Calavera
thank you James, I'm thinking on create a troubleshooting section into the
abdera wiki and this could be a useful resource.

On Mon, Aug 18, 2008 at 12:05 PM, James Abley <[EMAIL PROTECTED]> wrote:

> 2008/8/12 James Abley <[EMAIL PROTECTED]>:
> > Hi,
> >
> > I'm very happy with my AtomPub server running on a Sun JVM within
> > Tomcat. I'm less so with it running on JRockit / Weblogic 9.2. 68108
> >
> > I'm using Abdera revision 681083, so it's reasonably current.
> >
> > When I try to update a Media Link Entry on Weblogic, I get the
> > following (by using the debugger and printing the stack trace):
> >
> > org.apache.abdera.parser.ParseException:
> > java.lang.IllegalArgumentException: prefix cannot be "null" when
> > creating a QName
> >at
> org.apache.abdera.parser.stax.FOMBuilder.next(FOMBuilder.java:260)
> >at
> org.apache.axiom.om.impl.llom.OMElementImpl.getNextOMSibling(OMElementImpl.java:265)
> >at
> org.apache.axiom.om.impl.traverse.OMChildrenIterator.next(OMChildrenIterator.java:106)
> >at
> org.apache.abdera.parser.stax.FOMDocument.clone(FOMDocument.java:229)
> >at
> org.apache.abdera.protocol.server.impl.AbstractCollectionAdapter.getEntryFromRequest(AbstractCollectionAdapter.java:245)
> >at
> com.example.cms.abdera.MyCollectionAdapter.getEntryFromRequest(MyCollectionAdapter.java:399)
> >at
> org.apache.abdera.protocol.server.impl.AbstractEntityCollectionAdapter.putEntry(AbstractEntityCollectionAdapter.java:493)
> >at
> org.apache.abdera.protocol.server.processors.EntryRequestProcessor.processEntry(EntryRequestProcessor.java:46)
> >at
> org.apache.abdera.protocol.server.processors.EntryRequestProcessor.process(EntryRequestProcessor.java:37)
> >at
> org.apache.abdera.protocol.server.impl.AbstractProvider.process(AbstractProvider.java:136)
> >at
> org.apache.abdera.protocol.server.FilterChain.next(FilterChain.java:42)
> >at
> com.example.cms.abdera.JCRSessionFilter.filter(JCRSessionFilter.java:44)
> >at
> org.apache.abdera.protocol.server.FilterChain.next(FilterChain.java:42)
> >at
> org.apache.abdera.protocol.server.servlet.AbderaServlet.service(AbderaServlet.java:90)
> >at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
> >at
> weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:223)
> >at
> weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
> >at
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
> >at
> weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
> >at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
> >at
> com.example.cms.abdera.JCRSessionServletFilter.doFilter(JCRSessionServletFilter.java:39)
> >at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
> >at
> com.example.contentrepository.springmodule.http.TransactionSynchronizationFilter.doFilterInternal(TransactionSynchronizationFilter.java:98)
> >at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
> >at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
> >at
> weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3243)
> >at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
> >at
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
> >at
> weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2003)
> >at
> weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1909)
> >at
> weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1359)
> >at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
> >at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
> > Caused by: java.lang.IllegalArgumentException: prefix cannot be "null"
> > when creating a QName
> >at javax.xml.namespace.QName.(QName.java:220)
> >at
> weblogic.xml.stax.XMLStreamReaderBase.getAttributeName(XMLStreamReaderBase.java:339)
> >at
> org.apache.abdera.parser.stax.FOMBuilder.processAttributes(FOMBuilder.java:296)
> >at
> org.apache.abdera.parser.stax.FOMBuilder.constructNode(FOMBuilder.java:287)
> >at
> org.apache.abdera.parser.stax.FOMBuilder.createOMElement(FOMBuilder.java:98)
> >at
> org.apache.abdera.parser.stax.FOMBuilder.next(FOMBuilder.java:193)
> >... 32 more
> >
> > It works fine on Tomcat using Sun Java 5 and Java 6 JVMs.
> >
> > Setting a breakpoint at line 296 of FOMBuilder gives me a parser
> reference:
> >
> > parser.getClass().getProtectionDomain().getCodeSource().getLocation()
> > = 

Re: Working around (Weblogic) StAX issues

2008-08-18 Thread James Abley
2008/8/12 James Abley <[EMAIL PROTECTED]>:
> Hi,
>
> I'm very happy with my AtomPub server running on a Sun JVM within
> Tomcat. I'm less so with it running on JRockit / Weblogic 9.2. 68108
>
> I'm using Abdera revision 681083, so it's reasonably current.
>
> When I try to update a Media Link Entry on Weblogic, I get the
> following (by using the debugger and printing the stack trace):
>
> org.apache.abdera.parser.ParseException:
> java.lang.IllegalArgumentException: prefix cannot be "null" when
> creating a QName
>at org.apache.abdera.parser.stax.FOMBuilder.next(FOMBuilder.java:260)
>at 
> org.apache.axiom.om.impl.llom.OMElementImpl.getNextOMSibling(OMElementImpl.java:265)
>at 
> org.apache.axiom.om.impl.traverse.OMChildrenIterator.next(OMChildrenIterator.java:106)
>at 
> org.apache.abdera.parser.stax.FOMDocument.clone(FOMDocument.java:229)
>at 
> org.apache.abdera.protocol.server.impl.AbstractCollectionAdapter.getEntryFromRequest(AbstractCollectionAdapter.java:245)
>at 
> com.example.cms.abdera.MyCollectionAdapter.getEntryFromRequest(MyCollectionAdapter.java:399)
>at 
> org.apache.abdera.protocol.server.impl.AbstractEntityCollectionAdapter.putEntry(AbstractEntityCollectionAdapter.java:493)
>at 
> org.apache.abdera.protocol.server.processors.EntryRequestProcessor.processEntry(EntryRequestProcessor.java:46)
>at 
> org.apache.abdera.protocol.server.processors.EntryRequestProcessor.process(EntryRequestProcessor.java:37)
>at 
> org.apache.abdera.protocol.server.impl.AbstractProvider.process(AbstractProvider.java:136)
>at 
> org.apache.abdera.protocol.server.FilterChain.next(FilterChain.java:42)
>at 
> com.example.cms.abdera.JCRSessionFilter.filter(JCRSessionFilter.java:44)
>at 
> org.apache.abdera.protocol.server.FilterChain.next(FilterChain.java:42)
>at 
> org.apache.abdera.protocol.server.servlet.AbderaServlet.service(AbderaServlet.java:90)
>at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
>at 
> weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:223)
>at 
> weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
>at 
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
>at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
>at 
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
>at 
> com.example.cms.abdera.JCRSessionServletFilter.doFilter(JCRSessionServletFilter.java:39)
>at 
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
>at 
> com.example.contentrepository.springmodule.http.TransactionSynchronizationFilter.doFilterInternal(TransactionSynchronizationFilter.java:98)
>at 
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
>at 
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
>at 
> weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3243)
>at 
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
>at 
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
>at 
> weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2003)
>at 
> weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1909)
>at 
> weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1359)
>at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
>at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
> Caused by: java.lang.IllegalArgumentException: prefix cannot be "null"
> when creating a QName
>at javax.xml.namespace.QName.(QName.java:220)
>at 
> weblogic.xml.stax.XMLStreamReaderBase.getAttributeName(XMLStreamReaderBase.java:339)
>at 
> org.apache.abdera.parser.stax.FOMBuilder.processAttributes(FOMBuilder.java:296)
>at 
> org.apache.abdera.parser.stax.FOMBuilder.constructNode(FOMBuilder.java:287)
>at 
> org.apache.abdera.parser.stax.FOMBuilder.createOMElement(FOMBuilder.java:98)
>at org.apache.abdera.parser.stax.FOMBuilder.next(FOMBuilder.java:193)
>... 32 more
>
> It works fine on Tomcat using Sun Java 5 and Java 6 JVMs.
>
> Setting a breakpoint at line 296 of FOMBuilder gives me a parser reference:
>
> parser.getClass().getProtectionDomain().getCodeSource().getLocation()
> = file:/opt/bea/weblogic92/server/lib/weblogic.jar
>
> It seems to be a known issue with Weblogic's StAX implementation [1].
> Tempting though it might be to crack out JAD and patch the offending
> XMLStreamReaderBase class, I don't think my customers running on
> Weblogic would be entirely happy with that