我发布了一个XFire的web service,在调用的时候老报XFireRuntimeException,找不出来,请教高手帮忙!!下面是我的客户端代码:
[code]
                String serviceUrl="http://192.168.1.118:8080/sec_wss/services/WSS";
Service serviceM=new ObjectServiceFactory().create(RightsService.class);
XFireProxyFactory factory=new XFireProxyFactory(XFireFactory.newInstance().getXFire());
RightsService rightsService=(RightsService)factory.create(serviceM,serviceUrl);

String username=ea.getCredentila().getUsername();
String password=ea.getCredentila().getPassword();
                //下面这句报的异常,rightsService不是null,doService()未进入
rightsService.doService(respUrl, resp, username,password,serviceName);
[/code]下面是报的异常:
[code]
org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Couldn't get property {http://http.servlet.javax}writer from bean org.apache.catalina.connector.ResponseFacade@38fb59. Nested exception is java.lang.reflect.InvocationTargetException: null
org.codehaus.xfire.fault.XFireFault: Couldn't get property {http://http.servlet.javax}writer from bean org.apache.catalina.connector.ResponseFacade@38fb59. Nested exception is java.lang.reflect.InvocationTargetException: null
at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:83)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
at org.codehaus.xfire.client.Client.invoke(Client.java:336)
at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)
at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
at $Proxy0.doService(Unknown Source)
at com.rongware.security.servlet.WscToWss.doGet(WscToWss.java:100)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
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:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.codehaus.xfire.XFireRuntimeException: Couldn't get property {http://http.servlet.javax}writer from bean org.apache.catalina.connector.ResponseFacade@38fb59. Nested exception is java.lang.reflect.InvocationTargetException: null
at org.codehaus.xfire.aegis.type.basic.BeanType.readProperty(BeanType.java:446)
at org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:377)
at org.codehaus.xfire.aegis.AegisBindingProvider.writeParameter(AegisBindingProvider.java:229)
at org.codehaus.xfire.service.binding.AbstractBinding.writeParameter(AbstractBinding.java:273)
at org.codehaus.xfire.service.binding.WrappedBinding.writeMessage(WrappedBinding.java:90)
at org.codehaus.xfire.soap.SoapSerializer.writeMessage(SoapSerializer.java:80)
at org.codehaus.xfire.transport.http.HttpChannel.writeWithoutAttachments(HttpChannel.java:56)
at org.codehaus.xfire.transport.http.CommonsHttpMessageSender.getByteArrayRequestEntity(CommonsHttpMessageSender.java:422)
at org.codehaus.xfire.transport.http.CommonsHttpMessageSender.send(CommonsHttpMessageSender.java:360)
at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:123)
at org.codehaus.xfire.transport.http.XFireServletChannel.send(XFireServletChannel.java:48)
at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
... 20 more
[/code]是初始化异常吗??可rightsService对象不是NULL的啊~~~我晕!~~~~求教高手!!

解决方案 »

  1.   

    汗,代码和异常没显示??代码:
                    String serviceUrl="http://192.168.1.118:8080/sec_wss/services/WSS";
    Service serviceM=new ObjectServiceFactory().create(RightsService.class);
    XFireProxyFactory factory=new XFireProxyFactory(XFireFactory.newInstance().getXFire());
    RightsService rightsService=(RightsService)factory.create(serviceM,serviceUrl);

    String username=ea.getCredentila().getUsername();
    String password=ea.getCredentila().getPassword();
    //下面这句报错,而且rightsService不是NULL
    rightsService.doService(respUrl, resp, username,password,serviceName);错误:
    2009-6-25 16:50:44 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet WSC threw exception
    org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Couldn't get property {http://http.servlet.javax}writer from bean org.apache.catalina.connector.ResponseFacade@38fb59. Nested exception is java.lang.reflect.InvocationTargetException: null
    org.codehaus.xfire.fault.XFireFault: Couldn't get property {http://http.servlet.javax}writer from bean org.apache.catalina.connector.ResponseFacade@38fb59. Nested exception is java.lang.reflect.InvocationTargetException: null
    at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)
    at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:83)
    at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
    at org.codehaus.xfire.client.Client.invoke(Client.java:336)
    at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)
    at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
    at $Proxy0.doService(Unknown Source)
    at com.rongware.security.servlet.WscToWss.doGet(WscToWss.java:100)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    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:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)
    Caused by: org.codehaus.xfire.XFireRuntimeException: Couldn't get property {http://http.servlet.javax}writer from bean org.apache.catalina.connector.ResponseFacade@38fb59. Nested exception is java.lang.reflect.InvocationTargetException: null
    at org.codehaus.xfire.aegis.type.basic.BeanType.readProperty(BeanType.java:446)
    at org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:377)
    at org.codehaus.xfire.aegis.AegisBindingProvider.writeParameter(AegisBindingProvider.java:229)
    at org.codehaus.xfire.service.binding.AbstractBinding.writeParameter(AbstractBinding.java:273)
    at org.codehaus.xfire.service.binding.WrappedBinding.writeMessage(WrappedBinding.java:90)
    at org.codehaus.xfire.soap.SoapSerializer.writeMessage(SoapSerializer.java:80)
    at org.codehaus.xfire.transport.http.HttpChannel.writeWithoutAttachments(HttpChannel.java:56)
    at org.codehaus.xfire.transport.http.CommonsHttpMessageSender.getByteArrayRequestEntity(CommonsHttpMessageSender.java:422)
    at org.codehaus.xfire.transport.http.CommonsHttpMessageSender.send(CommonsHttpMessageSender.java:360)
    at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:123)
    at org.codehaus.xfire.transport.http.XFireServletChannel.send(XFireServletChannel.java:48)
    at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
    at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
    at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
    ... 20 more
      

  2.   

    ①访问http://192.168.1.118:8080/sec_wss/services/WSS?wsdl看看是否能通?
    ② 看看服务端的代码是否有什么改动?
      

  3.   

    1.检查wsdl是否有.wsdl或?wsdl,如果有,请把它去掉
    2.检查servcie端的方法名和客户端接口配置的方法名及通过浏览器访问到的wsdl的 opration 名字是否一致俺就这两招,希望有所帮助