1. 小视频教程 > 知识库 >

axisfault,如何解决java axis 调用webservice服务器操作异常

本文目录索引

1,如何解决java axis 调用webservice服务器操作异常

安装Eclipse-jee,下载Axis2的最新版本Axis2 1.4.1 Release,其内部结构为 开发前配置:在Eclipse的菜单栏中,Window --> Preferences --> Web Service --> Axis2 Perferences,在Axis2 runtime location中选择Axis2解压缩包的位置,设置好后,点"OK"即行。 新建一个Java Project,命名为"WS_01",在"WS_01"项目上new --> other,找到"Web Services"下面的"Web Service"; 在出现的Web Services对象框,在Service implementation中点击"Browse",进入Browse Classes对象框,查找到我们刚才写的写的CalculateService类。(如下图)。点击"ok",则回到 Web Service话框。 在Web Service对话框中,将Web Service type中的滑块,调到"start service“的位置,将Client type中的滑块调到"Test client"的位置。 在Web Service type滑块图的右边有个"Configuration",点击它下面的选项,进入Service Deployment Configuration对象框,在这里选择相应的Server(我这里用Tomcat6.0)和Web Service runtime(选择Apache Axis2) 点OK后,则返回到Web Service对话框,同理,Client type中的滑块右边也有"Configuration",也要进行相应的置,步骤同上。完成后,Next --> next即行。到了Server startup对话框,有个按键"start server",点击它,则可启动Tomcat服务器了。 等启完后,点击"next -- > next",一切默认即行,最后,点击完成。最后,出现如下界面:(Web Service Explorer),我们在这里便可测试我们的Web服务。 测试比较简单,例如,我们选择一个"plus"的Operation,出现下图,在x的输入框中输入2,在y的 输入框中输入3,点击"go",便会在status栏中显示结果5.0。其他方法的测试也类似。

如何解决java axis 调用webservice服务器操作异常

2,调用webservice报错

开发环境:JDK1.6.0,Geronimo 2.1.1( 含Axis2 )
问题描述:按照himple-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后出现的虚拟网络连接导致的,禁用这些虚拟网络连接即可。


3,java调用net的webservice 错误

这个问题很简单,有几个地方可能会导致这个问题。

1、命名空间,在设置调用action的时候指定action的命名空间,具体可以看wsdl文件中的声明。setOperationName(new QName("","HelloWorld"))

2、http协议版本不同造成的,axis2在做http传输时采用的chunked模式,而.net的webserver不支持axis中使用的是HTTP/1.0协议,而.NET和axis2使用的是HTTP/1.1协议,后两者的区别在于NET未使用ns1的命名空间前缀打包SOAP请求,且axis2使用了Content- Encoding: chunked头。所以必须在axis2中设置一下。
UserServiceStub stub = new UserServiceStub();
stub._getServiceClient().getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.CHUNKED,Boolean.FALSE);

具体的还要你试一下,如果方便的话把wsdl文件和java代码发给我,我看看是哪的问题。