Exception when enabling DomInHandler
------------------------------------
Key: XFIRE-351
URL: http://jira.codehaus.org/browse/XFIRE-351
Project: XFire
Type: Bug
Components: Core
Versions: 1.1-beta-1
Environment: java 1.5.0_06 on Mac OS X 10.4.6 (Intel)
Reporter: Andrew Wright
Assigned to: Dan Diephouse
Priority: Critical
When I add org.codehaus.xfire.util.dom.DOMInHandler to my service:
<service>
<name>ContentService</name>
<namespace>http://jivesoftware.com/webservices/</namespace>
<serviceClass>com.jivesoftware.forum.webservices.ContentService</serviceClass>
<implementationClass>com.jivesoftware.forum.webservices.xfire.ContentServiceImpl</implementationClass>
<inHandlers>
<handler handlerClass="org.codehaus.xfire.util.dom.DOMInHandler" />
<bean class="org.codehaus.xfire.security.wss4j.WSS4JInHandler"
xmlns="">
<property name="properties">
<props>
<prop key="action">UsernameToken</prop>
<prop
key="passwordCallbackClass">com.jivesoftware.forum.webservices.xfire.PasswordHandler</prop>
</props>
</property>
</bean>
<handler
handlerClass="com.jivesoftware.forum.webservices.xfire.ValidateUserTokenHandler"/>
</inHandlers>
</service>
I receive the following exception when making a request:
org.w3c.dom.DOMException: DOM002 Illegal character
at org.apache.xerces.dom.ElementNSImpl.setPrefix(ElementNSImpl.java:284)
at org.codehaus.xfire.util.STAXUtils.startElement(STAXUtils.java:421)
at org.codehaus.xfire.util.STAXUtils.readDocElements(STAXUtils.java:496)
at org.codehaus.xfire.util.STAXUtils.startElement(STAXUtils.java:446)
at org.codehaus.xfire.util.STAXUtils.readDocElements(STAXUtils.java:496)
at org.codehaus.xfire.util.STAXUtils.startElement(STAXUtils.java:446)
at org.codehaus.xfire.util.STAXUtils.readDocElements(STAXUtils.java:496)
at org.codehaus.xfire.util.STAXUtils.read(STAXUtils.java:395)
at org.codehaus.xfire.util.dom.DOMInHandler.invoke(DOMInHandler.java:42)
at
org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:98)
at
org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:60)
at
org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
at
org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:287)
at
org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:146)
at
org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:110)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
com.jivesoftware.base.util.ApplicationInitializedFilter.doFilter(ApplicationInitializedFilter.java:58)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:613)
This seems to be because there is no namespace prefix for operation portion the
request. However why should this matter, the service works properly when the
handler is removed.
Here is the request I am making:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<getForumMessage xmlns="http://jivesoftware.com/webservices/">
<in0>1</in0>
</getForumMessage>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
I made this request using Oxygen xml client, however I get the same problem if
I use xfire as the client.
If I manually change the request to this it works:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:jive="https://jivesoftware.com/webservices" >
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<jive:getForumMessage>
<jive:in0>1</jive:in0>
</jive:getForumMessage>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira