[
https://issues.apache.org/jira/browse/CXF-6231?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14298497#comment-14298497
]
Guillaume Grossetie commented on CXF-6231:
------------------------------------------
Hi [~ay]
Here is our configuration:
{code:xml}
<cxf:bus>
<cxf:features>
<cxf:logging />
</cxf:features>
<cxf:inInterceptors>
<ref bean="wss4jInConfiguration" />
<ref bean="charsetDefinition" />
</cxf:inInterceptors>
</cxf:bus>
<bean id="removeWSDLGetFeature" class="fr.package.feature.RemoveWSDLGetFeature">
<property name="disable" value="${ws.wsdl.disable}" />
</bean>
<jaxws:endpoint id="myWebService" implementor="#myWS" address="/IMyWebService"
implementorClass="fr.package.MyService">
<jaxws:features>
<ref bean="removeWSDLGetFeature" />
</jaxws:features>
</jaxws:endpoint>
{code}
And the RemoveWSDLGetFeature class:
{code:java}
public class RemoveWSDLGetFeature extends AbstractFeature {
private boolean disable;
@Override
protected void initializeProvider(InterceptorProvider provider, Bus bus) {
if (disable &&
provider.getInInterceptors().remove(WSDLGetInterceptor.INSTANCE)) {
LOG.info("Supress WSDLGetInterceptor");
}
}
public void setDisable(boolean disable) {
this.disable = disable;
}
}
{code}
> Getting the wsdl from a cxf webservice throws an exception
> ----------------------------------------------------------
>
> Key: CXF-6231
> URL: https://issues.apache.org/jira/browse/CXF-6231
> Project: CXF
> Issue Type: Bug
> Affects Versions: 2.7.14
> Reporter: Guillaume Grossetie
>
> Hi,
> We've updated CXF from 2.6.2 to 2.7.14 and we are experiencing this issue.
> When using WSDLGetOutInterceptor we get the following exception:
> {code}Can not output XML declaration, after other output has already been
> done.{code}
> {code}
> org.apache.cxf.interceptor.Fault: Can not output XML declaration, after other
> output has already been done.
> at
> org.apache.cxf.frontend.WSDLGetOutInterceptor.handleMessage(WSDLGetOutInterceptor.java:61)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
> at
> org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:83)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doInterceptStartingAt(PhaseInterceptorChain.java:424)
> at
> org.apache.cxf.frontend.WSDLGetInterceptor.handleMessage(WSDLGetInterceptor.java:97)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
> at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
> at
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:249)
> at
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:248)
> at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:222)
> at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:153)
> at
> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:211)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
> at
> weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
> at
> weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
> at
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301)
> at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3730)
> at
> weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696)
> at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
> at
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
> at
> weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273)
> at
> weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
> at
> weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490)
> at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
> at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
> Caused by: javax.xml.stream.XMLStreamException: Can not output XML
> declaration, after other output has already been done.
> at
> com.ctc.wstx.sw.BaseStreamWriter.throwOutputError(BaseStreamWriter.java:1537)
> at
> com.ctc.wstx.sw.BaseStreamWriter.reportNwfStructure(BaseStreamWriter.java:1566)
> at
> com.ctc.wstx.sw.BaseStreamWriter.doWriteStartDocument(BaseStreamWriter.java:646)
> at
> com.ctc.wstx.sw.BaseStreamWriter.writeStartDocument(BaseStreamWriter.java:634)
> at
> com.ctc.wstx.sw.BaseStreamWriter.writeStartDocument(BaseStreamWriter.java:622)
> at org.apache.cxf.staxutils.StaxUtils.writeDocument(StaxUtils.java:888)
> at
> org.apache.cxf.frontend.WSDLGetOutInterceptor.handleMessage(WSDLGetOutInterceptor.java:56)
> ... 32 more
> {code}
> I think this regression was introduced in:
> https://github.com/apache/cxf/commit/e0d4f15fd6f1b4352c189442e5f2902303bcd5cb
> Thanks
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)