讨论CXF在各AS上面通过MTOM等进行附件上传时所存在的问题

2 visningar
Hoppa till det första olästa meddelandet

YuLimin

oläst,
13 jan. 2008 23:32:512008-01-13
till cxf-zh
一、WebLogic Server
1、部署samples下面的mtom
ant war
部署后出现的问题通过这个来解决
http://yulimin.javaeye.com/blog/129015

2、修改build.xml
首先:将 http://localhost:7001/mtom/services/mtom?wsdl 文件另存为
mtom_xop_weblogic.wsdl

修改build.xml中的generate.code的target中的file为mtom_xop_weblogic.wsdl,如下:
<target name="generate.code">
<echo level="info" message="Generating code using
wsdl2java..."/>
<wsdl2java file="mtom_xop_weblogic.wsdl"/>
</target>

修改build.xml中的client的target中的param1为http://localhost:7001/mtom/services/
mtom?wsdl,如下:
<target name="client" description="run demo client"
depends="build">
<copy toFile="${build.classes.dir}/me.bmp" file="${basedir}/
src/demo/mtom/client/me.bmp"/>
<property name="param" value=""/>
<cxfrun classname="demo.mtom.client.Client"
param1="http://localhost:7001/mtom/services/mtom?wsdl"
param2="${op}"
param3="${param}"/>
</target>

修改build.xml中的client-servlet的target中的param1为http://localhost:7001/mtom/
services/mtom?wsdl,如下:
<target name="client-servlet" description="run demo client hitting
servlet" depends="build">
<property name="param" value=""/>
<cxfrun classname="demo.mtom.client.Client" param1="http://
localhost:7001/mtom/services/mtom?wsdl" param2="${op}"/>
</target>

3、运行 ant client 或 ant client-servlet
均出错:
client:
[java] http://localhost:7001/mtom/services/mtom?wsdl
[java] Filesize of me.bmp image is: 3888054

[java] Starting MTOM Test using basic byte array:
[java] --Sending the me.bmp image to server
[java] --Sending a name value of Sam
[java] Exception in thread "main"
javax.xml.ws.soap.SOAPFaultException: charsetName
[java] at
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:
175)
[java] at $Proxy27.testByteArray(Unknown Source)
[java] at demo.mtom.client.Client.main(Client.java:90)
[java] Caused by: org.apache.cxf.binding.soap.SoapFault:
charsetName
[java] at
org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:
70)
[java] at
org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:
35)
[java] at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:
207)
[java] at
org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:
90)
[java] at
org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:
179)
[java] at
org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:
56)
[java] at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:
207)
[java] at
org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:402)
[java] at org.apache.cxf.transport.http.HTTPConduit
$WrappedOutputStream.handleResponse(HTTPConduit.java:1948)
[java] at org.apache.cxf.transport.http.HTTPConduit
$WrappedOutputStream.close(HTTPConduit.java:1791)
[java] at
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:
66)
[java] at
org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:575)
[java] at org.apache.cxf.interceptor.MessageSenderInterceptor
$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:
62)
[java] at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:
207)
[java] at
org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
[java] at
org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
[java] at
org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
[java] at
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:
135)
[java] ... 2 more
[java] Java Result: 1

先把问题整理了出来,正在想法办解决当中,有解决过这个问题的请Share你的解决方法。谢谢。

YuLimin

oläst,
14 jan. 2008 01:30:372008-01-14
till cxf-zh
服务端的错误:
2008-1-14 14:19:37 org.apache.cxf.phase.PhaseInterceptorChain
doIntercept
信息: Interceptor has thrown exception, unwinding now
java.lang.NullPointerException: charsetName
at java.io.InputStreamReader.<init>(InputStreamReader.java:82)
at
weblogic.xml.stax.XMLStreamInputFactory.createXMLStreamReader(XMLStreamInputFactory.java:
69)
at
org.apache.cxf.interceptor.StaxInInterceptor.handleMessage(StaxInInterceptor.java:
65)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:
207)
at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:
73)
at
org.apache.cxf.transport.servlet.ServletDestination.doMessage(ServletDestination.java:
79)
at
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:
256)
at
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:
160)
at
org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:
170)
at
org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:
148)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
856)
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:
283)
at
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:
175)
at weblogic.servlet.internal.WebAppServletContext
$ServletInvocationAction.run(WebAppServletContext.java:3231)
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:
2002)
at
weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:
1908)
at
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:
1362)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)

willem

oläst,
14 jan. 2008 02:19:132008-01-14
till cxf-zh
这是因为你使用了Weblogic 的stax 实现。
你可以通过设置system property 或者通过spring 配置的方式来重新设置stax实现。


<jaxws:endpoint id="Service"
implementor="×××"
address="/service">

<jaxws:properties>
<entry key="javax.xml.stream.XMLInputFactory"
value="com.ctc.wstx.stax.WstxInputFactory" />
<entry key="javax.xml.stream.XMLOutputFactory"
value="com.ctc.wstx.stax.WstxOutputFactory" />
<entry key="javax.xml.stream.XMLEventFactory"
value="com.ctc.wstx.stax.WstxEventFactory" />
</jaxws:properties>
</jaxws:endpoint>

姜宁 (Willem)
------------------
http://willem.bokeland.com/
Svara alla
Svara författaren
Vidarebefordra
0 nya meddelanden