CXF编写cxf获取客户端ip为什么报这样的错,求大神帮忙解答

CXF在servlet中编写客户端调用远程服务端处理类的问题
[问题点数:100分,无满意结帖,结帖人myepoch]
CXF在servlet中编写客户端调用远程服务端处理类的问题
[问题点数:100分,无满意结帖,结帖人myepoch]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。16:43 提问
cxf webservice客户端调用报错.高手请进.
&!-- WebServices设置 --&
&servlet-name&CXFServices&/servlet-name&
&servlet-class&org.apache.cxf.transport.servlet.CXFServlet&/servlet-class&
&load-on-startup&1&/load-on-startup&
&/servlet&
&servlet-mapping&
&servlet-name&CXFServices&/servlet-name&
&url-pattern&rvices/*&/url-pattern&
&/servlet-mapping&
客户端调用异常信息
org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet CXFServices threw exception
java.lang.ClassNotFoundException: javax.mail.MessagingException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at org.apache.cxf.interceptor.AttachmentInInterceptor.handleMessage(AttachmentInInterceptor.java:62)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:122)
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:211)
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:213)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:193)
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:129)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:187)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:110)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:166)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
@WebService
public interface CmisWeb
public FamilyMemberResult findFamilyMembers(WsUser wSUser, FamilyMemberSearchDTO search);
按赞数排序
首先这个地方改成这样试试
&servlet-mapping&
&servlet-name&CXFServices&/servlet-name&
&url-pattern&/rvices/*&/url-pattern&
&/servlet-mapping&
然后看你那个接口文件是否在rvices下,报的错好像是找不到你那个接口文件,再不行就改成/*
很明显缺少mail jar 报,自己去下载个cxf.zip里面找去。
其他相似问题
相关参考资料CXF如何统一处理验证错误信息,将错误信息以自定义报文的形式返回客户端。
问题补充:wanghuanqiu 写道CXF获取soap的报文,然后自己解析
但是验证失败能有报文吗?我在验证用户的时候,如果验证失败抛出的是Soap异常。这样客户端得到的也是这些异常信息。我想在服务端把这些异常转化为统一的报文,包含错误码和信息。这样客户端查看也比较方便。
如果失败也会返回一个报文的,错误信息都在body里
CXF获取soap的报文,然后自己解析
已解决问题
未解决问题wsdl地址:.cn/WebServices/WeatherWebService.asmx?wsdl 请注意&targetNamespace=&.cn/&&自定义返回值类型为ArrayOfString 使用wsdltojava&生成客户端&目录为&com.webservice.weather 调用的时候会报错Exception&in&thread&&main&&java.lang.ClassCastException:&.webxml.ArrayOfString&cannot&be&cast&to&com.webservice.weather.ArrayOfString &
因此只能生成跟目录为cn.com.webxml才好使。这种情况如果解决
public&static&void&main(String[]&args)&throws&Exception&{&&
&&&&&&&&java.net.URL&wsdlLocation&=&ClassLoader.getSystemResource(&wsdl/weather.wsdl&);&&
&&&&&&&&&&
&&&&&&&&JaxWsDynamicClientFactory&dcf&=JaxWsDynamicClientFactory.newInstance();
&&&&&&&&org.apache.cxf.endpoint.Client&client&=&dcf.createClient(wsdlLocation);
&&&&&&&&Object[]&provinces&=&client.invoke(&getSupportProvince&);&&
&&&&&&&&if(provinces&!=&null&&&&provinces.length&&&0)&{&&
&&&&&&&&&&&&for(Object&province&:&provinces)&{
&&&&&&&&&&&&&&&&System.out.println(((com.webservice.weather.ArrayOfString)province).getString());&&
&&&&&&&&&&&&}&&
&&&&&&&&}&&
&&&&&&&&Object[]&citys&=&client.invoke(&getSupportCity&,&北京&);&&
&&&&&&&&if(citys&!=&null&&&&citys.length&&&0)&{&&
&&&&&&&&&&&&for(Object&city&:&citys)&{&&
&&&&&&&&&&&&&&&&System.out.println(((com.webservice.weather.ArrayOfString)city).getString());&&
&&&&&&&&&&&&}&&
&&&&&&&&}&&
回复讨论(解决方案)
类型转换异常。
cn.com.webxml.ArrayOfString&&不能转成&com.webservice.weather.ArrayOfString
在你的代码里:
Object[]&provinces&=&client.invoke(&getSupportProvince&);&&
&&&&&&&&if(provinces&!=&null&&&&provinces.length&&&0)&{&&
&&&&&&&&&&&&for(Object&province&:&provinces)&{
&&&&&&&&&&&&&&&&System.out.println(((com.webservice.weather.ArrayOfString)province).getString());&&
&&&&&&&&&&&&}&&
&&&&&&&&}&&
这个province&你注意他的类型
这个我是知道的,ArrayOfString这个自定义返回类型,是cxf生成的。wsdl文件中provinces的代理类型就是cn.com.webxml
我不能用这个路径。
换种方式即可高中化学高手进/link?url=QR_K2PbYiU7yeSt4LSKPd0Yhme7DPZNvcXfPeTV6xbAKESO-QUNmEl9XFEqk1NVRepJJ-1Py_Ul3PB9_7qAwoq我想问的是负极的那个反应式 ,其中的氢氧根离子为什么不能写成水分子呢?如果写_百度作业帮
高中化学高手进/link?url=QR_K2PbYiU7yeSt4LSKPd0Yhme7DPZNvcXfPeTV6xbAKESO-QUNmEl9XFEqk1NVRepJJ-1Py_Ul3PB9_7qAwoq我想问的是负极的那个反应式 ,其中的氢氧根离子为什么不能写成水分子呢?如果写
高中化学高手进/link?url=QR_K2PbYiU7yeSt4LSKPd0Yhme7DPZNvcXfPeTV6xbAKESO-QUNmEl9XFEqk1NVRepJJ-1Py_Ul3PB9_7qAwoq我想问的是负极的那个反应式 ,其中的氢氧根离子为什么不能写成水分子呢?如果写成水分子的话,式子该怎么写
他写错了.负极:2Al-6e+8OH-= 2AlO2 - +4H2O不能换成水,因为两边电荷守恒,左边如果是水,那么右边要配成H+.因为在碱性溶液中,不能出现H+,所以不能换.我写的这个式子才是正确的.
不能写成H2O分子,假定是水分子,为了电荷守恒,右侧就会有H+那么只能写成 2 Al - 6e + 8 H2O = 2 AlO2 - + 4 H2O + 8 H+因为溶液中大量存在OH-,H+不可能存在。并且AlO2-也不会与H+同时生成。
如果前面是和h2o后面就多了氢离子 而偏铝酸根和氢离子不可共存
他写错了。负极:2Al-6e+8OH-= 2AlO2 - +4H2O不能换成水,因为两边电荷守恒,左边如果是水,那么右边要配成H+。因为在碱性溶液中,不能出现H+,所以不能换。我写的这个式子才是正确的。

我要回帖

更多关于 cxf获取客户端ip 的文章

 

随机推荐