zoukankan      html  css  js  c++  java
  • XFire Unexpected character '>' (code 62) expected '='

    虚线以下内容是网络上找到的他人的方法,自己面临Unexpected character '>' (code 62) expected '=' 时尝试使用此法,但却不见效,后来发现,每当出现此错误,重新启动 (1)MyEclipse 或 (2) Tomcat 或  (3) 计算机 ( Computer)可 解决此问题。
    ------------------------------------------------------
    声明:第一次开发WebService,第一次使用XFire,WebService方面的新手
    目的:分享经验、备忘
    时间:2008-01-22
    错误说明:在调用WebService的时候报错:
    Java代码 复制代码
    1. org.codehaus.xfire.fault.XFireFault: Unexpected character '>' (code 62) expected '='  
    org.codehaus.xfire.fault.XFireFault: Unexpected character '>' (code 62) expected '='

    解决方案:在webService应用的web.xml中加入:
    Java代码 复制代码
    1.    <filter>   
    2.     <filter-name>CompressingFilter</filter-name>   
    3.     <filter-class>   
    4.         com.planetj.servlet.filter.compression.CompressingFilter   
    5.     </filter-class>   
    6.     <init-param>   
    7.         <param-name>debug</param-name>   
    8.         <param-value>false</param-value>   
    9.     </init-param>   
    10.     <init-param>   
    11.         <param-name>statsEnabled</param-name>   
    12.         <param-value>true</param-value>   
    13.     </init-param>   
    14. </filter>   
    15. <filter-mapping>   
    16.     <filter-name>CompressingFilter</filter-name>   
    17.     <url-pattern>/services/*</url-pattern>   
    18. </filter-mapping>  
        <filter>
    		<filter-name>CompressingFilter</filter-name>
    		<filter-class>
    			com.planetj.servlet.filter.compression.CompressingFilter
    		</filter-class>
    		<init-param>
    			<param-name>debug</param-name>
    			<param-value>false</param-value>
    		</init-param>
    		<init-param>
    			<param-name>statsEnabled</param-name>
    			<param-value>true</param-value>
    		</init-param>
    	</filter>
    	<filter-mapping>
    		<filter-name>CompressingFilter</filter-name>
    		<url-pattern>/services/*</url-pattern>
    	</filter-mapping>
    


    详细说明:
    开发环境:
        服务器:Tomcat5.0
       JDK:  JDK1.4.2
       IDE:  MyEclicpse6.0.0 GA+Eclipse3.3
       其他:  XFire1.2.6
    开发简要说明(代码就是SayHello,这里不再说明):
    1、通过MyEclipse建立Web Service Project
    2、通过MyEclipse新增WebService:
         service name:SayAny
        Service Interface: ISayAny
        Service Impl. class:  ISayAnyImpl
    生成的Web.xml如下:
    Java代码 复制代码
    1. <?xml version="1.0" encoding="UTF-8"?>   
    2. <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">   
    3.   <servlet>    
    4.     <servlet-name>XFireServlet</servlet-name>   
    5.     <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>   
    6.     <load-on-startup>0</load-on-startup>   
    7.   </servlet>   
    8.   <servlet-mapping>   
    9.     <servlet-name>XFireServlet</servlet-name>   
    10.     <url-pattern>/services/*</url-pattern>   
    11.   </servlet-mapping>   
    12.   <welcome-file-list>   
    13.     <welcome-file>index.jsp</welcome-file>   
    14.   </welcome-file-list>   
    15. </web-app>  
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
      <servlet> 
        <servlet-name>XFireServlet</servlet-name>
        <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
        <load-on-startup>0</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>XFireServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
      </servlet-mapping>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    


    services.xml内容如下:(新手说明:在项目下与WebRoot同级目录下,myEclipse自动生成一个WebServices目录,services.xml在此目录中)
    Java代码 复制代码
    1. <beans xmlns="http://xfire.codehaus.org/config/1.0">   
    2. <service>   
    3. <name>SayAny</name>   
    4. <serviceClass>com.jiang.service.ISayAny</serviceClass>   
    5. <implementationClass>com.jiang.service.SayAnyImpl</implementationClass>   
    6. <style>wrapped</style>   
    7. <use>literal</use>   
    8. <scope>application</scope>   
    9. </service>   
    10. </beans>  
    <beans xmlns="http://xfire.codehaus.org/config/1.0">
    <service>
    <name>SayAny</name>
    <serviceClass>com.jiang.service.ISayAny</serviceClass>
    <implementationClass>com.jiang.service.SayAnyImpl</implementationClass>
    <style>wrapped</style>
    <use>literal</use>
    <scope>application</scope>
    </service>
    </beans>
    


    3、直接通过MyEclipse发布到Tomcat上;
    4、访问http://localhost/studyWebService/services/SayAny?wsdl可以成功看到一个XML内容,里面内容不在此说明
    5、编写测试程序,main方法如下:
    Java代码 复制代码
    1. public static void main(String[] args) {   
    2.     String serviceURL = "http://localhost/studyWebService/services/SayAny";   
    3.        
    4.     String datas = "";   
    5.     //service   
    6.     Service serviceModel = new ObjectServiceFactory().create(   
    7.             ISayAny.classnull""null);   
    8.   
    9.     XFireProxyFactory serviceFactory = new XFireProxyFactory();   
    10.     try {   
    11.         ISayAny service = (ISayAny) serviceFactory.create(   
    12.                 serviceModel, serviceURL);   
    13.         Client client = ((XFireProxy) Proxy.getInvocationHandler(service)).getClient();   
    14.         client.setProperty(CommonsHttpMessageSender.GZIP_ENABLED,   
    15.                 Boolean.TRUE);   
    16.         client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "0");   
    17.         datas = service.sayHello("jiang shan");   
    18.         System.out.println(datas);   
    19.            
    20.     } catch (Exception e) {   
    21.         e.printStackTrace();   
    22.     }   
    23. }  
    	public static void main(String[] args) {
    		String serviceURL = "http://localhost/studyWebService/services/SayAny";
    		
    		String datas = "";
    		//service
    		Service serviceModel = new ObjectServiceFactory().create(
    				ISayAny.class, null, "", null);
    
    		XFireProxyFactory serviceFactory = new XFireProxyFactory();
    		try {
    			ISayAny service = (ISayAny) serviceFactory.create(
    					serviceModel, serviceURL);
    			Client client = ((XFireProxy) Proxy.getInvocationHandler(service)).getClient();
    			client.setProperty(CommonsHttpMessageSender.GZIP_ENABLED,
    					Boolean.TRUE);
    			client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "0");
    			datas = service.sayHello("jiang shan");
    			System.out.println(datas);
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    


    WebServer获得相应,但在
    Java代码 复制代码
    1. datas = service.sayHello("jiang shan");  
    datas = service.sayHello("jiang shan");
    报错:
    错误如下:
    Java代码 复制代码
    1.   
    2. com.jiang.service.TestAdStatData  - Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Unexpected character '>' (code 62) expected '='  
    3.  at [row,col {unknown-source}]: [1,708]   
    4. org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Unexpected character '>' (code 62) expected '='  
    5.  at [row,col {unknown-source}]: [1,708]   
    6. org.codehaus.xfire.fault.XFireFault: Unexpected character '>' (code 62) expected '='  
    7.  at [row,col {unknown-source}]: [1,708]   
    8.     at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)   
    9.     at org.codehaus.xfire.client.Client.onReceive(Client.java:391)   
    10.     at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:139)   
    11.     at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)   
    12.     at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)   
    13.     at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)   
    14.     at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:75)   
    15.     at org.codehaus.xfire.client.Client.invoke(Client.java:335)   
    16.     at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)   
    17.     at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)   
    18.     at $Proxy0.getAdDataByUidAndPosId(Unknown Source)   
    19.     at com.jiang.service.TestAdStatData.main(TestAdStatData.java:37)   
    20. Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '>' (code 62) expected '='  
    21.  at [row,col {unknown-source}]: [1,708]   
    22.     at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:623)   
    23.     at com.ctc.wstx.sr.BasicStreamReader.handleNsAttrs(BasicStreamReader.java:2999)   
    24.     at com.ctc.wstx.sr.BasicStreamReader.handleStartElem(BasicStreamReader.java:2934)   
    25.     at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2846)   
    26.     at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1019)   
    27.     at org.codehaus.xfire.soap.handler.ReadHeadersHandler.invoke(ReadHeadersHandler.java:44)   
    28.     at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)   
    29.     at org.codehaus.xfire.client.Client.onReceive(Client.java:387)   
    30.     ... 10 more  
    com.jiang.service.TestAdStatData  - Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Unexpected character '>' (code 62) expected '='
     at [row,col {unknown-source}]: [1,708]
    org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Unexpected character '>' (code 62) expected '='
     at [row,col {unknown-source}]: [1,708]
    org.codehaus.xfire.fault.XFireFault: Unexpected character '>' (code 62) expected '='
     at [row,col {unknown-source}]: [1,708]
    	at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)
    	at org.codehaus.xfire.client.Client.onReceive(Client.java:391)
    	at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:139)
    	at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.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:75)
    	at org.codehaus.xfire.client.Client.invoke(Client.java:335)
    	at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)
    	at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
    	at $Proxy0.getAdDataByUidAndPosId(Unknown Source)
    	at com.jiang.service.TestAdStatData.main(TestAdStatData.java:37)
    Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '>' (code 62) expected '='
     at [row,col {unknown-source}]: [1,708]
    	at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:623)
    	at com.ctc.wstx.sr.BasicStreamReader.handleNsAttrs(BasicStreamReader.java:2999)
    	at com.ctc.wstx.sr.BasicStreamReader.handleStartElem(BasicStreamReader.java:2934)
    	at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2846)
    	at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1019)
    	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:387)
    	... 10 more
    


    解决方案本文上面所说:加入pjl-comp-filter-1.4.6.jar,并在Web.xml中配置filter即可。

    出错原因:这句有问题:
    Java代码 复制代码
    1. client.setProperty(CommonsHttpMessageSender.GZIP_ENABLED,Boolean.TRUE);  
    client.setProperty(CommonsHttpMessageSender.GZIP_ENABLED,Boolean.TRUE);

    客户端调用时设置了GZIP参数,但Server端没有用GZIP过滤文件!
  • 相关阅读:
    apache2三种模式及切换到event模式
    MySQL添加用户、创建数据库、分配权限
    ExcelHelper导出
    C#中将错误写进日志文件
    k3 cloud金蝶云参数设置云之家集成,提示无法推送企业消息
    k3 cloud中用视图类型来展示数据
    k3 cloud python 插件实现点击对应的单据编号打开单据
    k3 cloud单据转换的表
    sql server查询某个表对应的触发器
    QPainter::begin: Paint device returned engine == 0, type: 3
  • 原文地址:https://www.cnblogs.com/cy163/p/1411301.html
Copyright © 2011-2022 走看看