org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Unexpected character '-' (code 45) in external DTD subset; expected closing '>' after ENTITY declaration
 at [row,col,system-id]: [31,3,"http://www.w3.org/TR/html4/loose.dtd"]
 from [row,col {unknown-source}]: [1,1]
org.codehaus.xfire.fault.XFireFault: Unexpected character '-' (code 45) in external DTD subset; expected closing '>' after ENTITY declaration
 at [row,col,system-id]: [31,3,"http://www.w3.org/TR/html4/loose.dtd"]
 from [row,col {unknown-source}]: [1,1]
at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)
at org.codehaus.xfire.client.Client.onReceive(Client.java:410)
at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:139)
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)
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.updateHolidays(Unknown Source)
at com.service.hjsoft.WebservieUtil.updateHolidays(WebservieUtil.java:108)
at com.hr.service.impl.HrEmpVacate.procVacate(HrEmpVacate.java:138)
at com.hr.service.impl.HrServiceImpl.syncEmpVacate(HrServiceImpl.java:45)
at sun.reflect.GeneratedMethodAccessor779.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.codehaus.xfire.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:59)
at org.codehaus.xfire.service.invoker.ObjectInvoker.invoke(ObjectInvoker.java:45)
at org.codehaus.xfire.service.binding.ServiceInvocationHandler.sendMessage(ServiceInvocationHandler.java:320)
at org.codehaus.xfire.service.binding.ServiceInvocationHandler$1.run(ServiceInvocationHandler.java:86)
at org.codehaus.xfire.service.binding.ServiceInvocationHandler.execute(ServiceInvocationHandler.java:134)
at org.codehaus.xfire.service.binding.ServiceInvocationHandler.invoke(ServiceInvocationHandler.java:109)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:64)
at org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
at org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:304)
at org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:129)
at org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
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:175)
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:844)
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(Unknown Source)
Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '-' (code 45) in external DTD subset; expected closing '>' after ENTITY declaration
 at [row,col,system-id]: [31,3,"http://www.w3.org/TR/html4/loose.dtd"]
 from [row,col {unknown-source}]: [1,1]
at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:623)
at com.ctc.wstx.dtd.FullDTDReader.throwDTDUnexpectedChar(FullDTDReader.java:2013)
at com.ctc.wstx.dtd.FullDTDReader.parseEntityValue(FullDTDReader.java:1533)
at com.ctc.wstx.dtd.FullDTDReader.handleEntityDecl(FullDTDReader.java:2419)
at com.ctc.wstx.dtd.FullDTDReader.handleDeclaration(FullDTDReader.java:2075)
at com.ctc.wstx.dtd.FullDTDReader.parseDirective(FullDTDReader.java:720)
at com.ctc.wstx.dtd.FullDTDReader.parseDTD(FullDTDReader.java:599)
at com.ctc.wstx.dtd.FullDTDReader.readExternalSubset(FullDTDReader.java:457)
at com.ctc.wstx.sr.ValidatingStreamReader.findDtdExtSubset(ValidatingStreamReader.java:478)
at com.ctc.wstx.sr.ValidatingStreamReader.finishDTD(ValidatingStreamReader.java:358)
at com.ctc.wstx.sr.BasicStreamReader.skipToken(BasicStreamReader.java:3349)
at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:1988)
at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
at org.codehaus.xfire.soap.handler.ReadHeadersHandler.invoke(ReadHeadersHandler.java:44)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Client.onReceive(Client.java:406)
... 42 moreatxfirecharacterentity异常

解决方案 »

  1.   

    你做webservice,怎么用这个做
     */
    public class Callwebsrvice {
    private static Logger logger = Logger.getLogger(Callwebsrvice.class);
    public String callWebservice(List<Param> list, WebserviceCfg cfg,
    String meth) {
    String result = "";
    String url = cfg.getKeyurl();
    System.out.println(url);
    try {
    String namespace = cfg.getMap().get(meth).getNamespace();// "http://220.189.220.166/TraceInsu/";
    String methodName = cfg.getMap().get(meth).getMethod();
    Service service = new Service();
    Call call = (Call) service.createCall();
    call.setTargetEndpointAddress(new java.net.URL(url));
    call.setOperationName(new QName(namespace, methodName));
    Object[] obj = new Object[list.size()];
    for (int i = 0; i < list.size(); i++) {
    call.addParameter(new javax.xml.namespace.QName(namespace, list
    .get(i).getKey()), list.get(i).getKeytype(), list
    .get(i).getClasses(), javax.xml.rpc.ParameterMode.IN);
    obj[i] = list.get(i).getVal();
    }
    call.setReturnType(cfg.getReturntype());
    Object objs = call.invoke(obj);
    if (objs != null) {
    result = (String) objs;
    } else {
    result = "";
    } } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    System.out.println(e.getMessage());
    }
    return result;
    }
      

  2.   

    你返回类型是什么格式?是text/xml吗