webService之axis

有关aixs的发布,客户端调用等等,方法一搜一大把,都写的不错,在这里我就不再重述了。下面我写一些自己学习过程中遇到的问题,希望和大家互相交流交流

1.在axis发布中,遇到的一个困扰我很久的问题

Exception: AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: java.net.ConnectException: Connection refused: connect
 faultActor: 
 faultNode: 
 faultDetail: 
	{http://xml.apache.org/axis/}stackTrace:java.net.ConnectException: Connection refused: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
	at java.net.Socket.connect(Socket.java:529)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:153)
	at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:120)
	at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191)
	at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404)
	at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
	at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
	at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
	at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
	at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
	at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
	at org.apache.axis.client.Call.invoke(Call.java:2767)
	at org.apache.axis.client.Call.invoke(Call.java:1792)
	at org.apache.axis.client.AdminClient.process(AdminClient.java:439)
	at org.apache.axis.client.AdminClient.process(AdminClient.java:404)
	at org.apache.axis.client.AdminClient.process(AdminClient.java:410)
	at org.apache.axis.client.AdminClient.process(AdminClient.java:320)
	at org.apache.axis.client.AdminClient.main(AdminClient.java:463)

在网上搜了很长时间,没有找个想要的答案,大多都讲的是该如何通过正确的命令,去解决这个问题。我也确实按照他们说的来了,可结果还是如此,很是郁闷,只好看了一下别人写的一个完整的例子,才恍然大悟,原来,我错的如此离谱。

哈,废话不多说了,进入正题:这个错误,是因为,你在执行类似这样的命令:-lhttp://localhost:8080/learn_axis/servlet/AxisServlet deploy.wsdd ,有没有启动你的tomcat,端口号是不是8080?还有你有某有在web.xml文件里做类似这样的配置:

  <servlet>
    <servlet-name>AxisServlet</servlet-name>
    <display-name>Apache-Axis Servlet</display-name>
    <servlet-class>
        org.apache.axis.transport.http.AxisServlet
    </servlet-class>
  </servlet>
    <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/servlet/AxisServlet</url-pattern>
  </servlet-mapping>
    <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>
2.反思:不管你是通过cmd,敲出的命令,还是直接run->java application 运行的命令,都用到了org.apache.axis.client.AdminClient。那么我们打上断点,看看它是如何运行的吧,随着断点一直走,一直走,我们会发现,哇,好多invoke啊,直到   org.apache.axis.transport.http.HTTPSenderinvoke方法,我看到了SocketHolder,又发现Socket,再结合这个类名,HTTPSender,很显然他要发送请求,他要干嘛?想起那句话没:发布成功,会在web-inf下生成一个server-config.wsdd文件,这个文件包含有你在deploy.wsdd文件里配置的信息。他怎么知道要往什么地方的server-config.wsdd文件写信息,自然是你给了他地址:                                http://localhost:8080/learn_axis/servlet/AxisServlet 

他要访问你的服务,你不启动自然要报拒绝连接的错误了,如果你启动了还会看到

Exception: AxisFault
 faultCode: {http://xml.apache.org/axis/}HTTP
 faultSubcode: 
 faultString: (404)Not Found
 faultActor: 
 faultNode: 
 faultDetail: 
	{}:return code:  404
<html><head><title>Apache Tomcat/6.0.32 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 404 - /learn_axis/servlet/AxisServlet</h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u>/learn_axis/servlet/AxisServlet</u></p><p><b>description</b> <u>The requested resource (/learn_axis/servlet/AxisServlet) is not available.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/6.0.32</h3></body></html>
	{http://xml.apache.org/axis/}HttpErrorCode:404
这是因为找不到 servlet/AxisServlet 了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值