Axis2介绍和例子

FAQ

1、Axis2中出现的Unexpected EOF in prolog问题

开发环境:JDK1.6.0,Geronimo 2.1.1( 含Axis2 )

问题描述:按照http://cwiki.apache.org/GMOxDOC21/developing-a-simple-calculator-web-service.html上的教程构建jax-ws calculator这个web service,可部署到Geronimo 2.1.1后,在index.jsp上输入3和4,然后点击=转到result.jsp后,Geronimo控制台上出现如下错误:

18:54:35,406 ERROR [Axis2WebServiceContainer] Exception occurred while trying to invoke service method doService()

org.apache.axis2.AxisFault: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog

at [row,col {unknown-source}]: [1,0]

        at org.apache.axis2.AxisFault.makeFault(AxisFault.java:417)

解决方案:很简单,关闭你的杀毒软件如卡巴斯基(Kaspersky)就行了,Windows防火墙不用关。另外,如果卡巴斯基是开着的,在Geronimo 1.1.1 + Axis2 1.2里部署了Web服务后,访问时也会出现类似于上面的问题。

P.S. :在含Axis2的Geronimo里部署Web服务后,如果发现自动生成的WSDL文件中的端口的地址不对,如IP地址部分编程了192.168.30.1,则很有可能是因为安装了VMware后出现的虚拟网络连接导致的,禁用这些虚拟网络连接即可。

 

2、将ws.aar文件复制到<Tomcat安装目录>\webapps\axis2\WEB-INF\services目录中,启动Tomcat后Tomcat报错

Error: org.apache.axis2.deployment.DeploymentException: com.ctc.wstx.exc.WstxIOException: Invalid UTF-8 middle byte 0xfd (at char #66, byte #-1) at org.apache.axis2.deployment.repository.util.ArchiveReader.processServiceGroup(ArchiveReader.java:151) at org.apache.axis2.deployment.ServiceDeployer.deploy(ServiceDeployer.java:81) at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136) at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:597) at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144) at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:330) at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:227) at org.apache.axis2.deployment.RepositoryListener.startListener(RepositoryListener.java:324) at org.apache.axis2.deployment.scheduler.SchedulerTask.checkRepository(SchedulerTask.java:64) at org.apache.axis2.deployment.scheduler.SchedulerTask.run(SchedulerTask.java:71) at org.apache.axis2.deployment.scheduler.Scheduler$SchedulerTimerTask.run(Scheduler.java:83) at java.util.TimerThread.mainLoop(Unknown Source) at java.util.TimerThread.run(Unknown Source) Caused by: org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxIOException: Invalid UTF-8 middle byte 0xfd (at char #66, byte #-1) at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:249) at org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:132) at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:411) at org.apache.axis2.util.XMLUtils.toOM(XMLUtils.java:602) at org.apache.axis2.util.XMLUtils.toOM(XMLUtils.java:581) at org.apache.axis2.deployment.DescriptionBuilder.buildOM(DescriptionBuilder.java:97) at org.apache.axis2.deployment.repository.util.ArchiveReader.buildServiceGroup(ArchiveReader.java:77) at org.apache.axis2.deployment.repository.util.ArchiveReader.processServiceGroup(ArchiveReader.java:144) ... 12 more Caused by: com.ctc.wstx.exc.WstxIOException: Invalid UTF-8 middle byte 0xfd (at char #66, byte #-1) at com.ctc.wstx.sr.StreamScanner.throwFromIOE(StreamScanner.java:683) at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1086) at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:506) at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:161) ... 19 more Caused by: java.io.CharConversionException: Invalid UTF-8 middle byte 0xfd (at char #66, byte #-1) at com.ctc.wstx.io.UTF8Reader.reportInvalidOther(UTF8Reader.java:313) at com.ctc.wstx.io.UTF8Reader.read(UTF8Reader.java:204) at com.ctc.wstx.io.ReaderSource.readInto(ReaderSource.java:84) at com.ctc.wstx.io.BranchingReaderSource.readInto(BranchingReaderSource.java:57) at com.ctc.wstx.sr.StreamScanner.loadMore(StreamScanner.java:967) at com.ctc.wstx.sr.StreamScanner.getNext(StreamScanner.java:738) at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:1995) at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069) ... 21 more

 

解决:这是中文问题,删掉services.xml中的中文即可。要想在services.xml中加中文,需要将编码设为UTF-8或GBK。


如果给你带来帮助,欢迎微信或支付宝扫一扫,赞一下。