<wsdd> 使用AdminClient无法从deploy.wsdd生成server-config.wsdd

使用axis来发布自己的webservice服务通常两种方法,一是即时发布 JWS (Java Web Service) Files - Instant Deployment ,即通过jws文件发布,二是定制发布 Custom Deployment - Introducing WSDD。前者发布不支持服务类在package里,还有众多不便,现在已很少使用,后者经常被使用(其实我现在更多的是用tuscany来发布服务,更方便)。

现在是使用电信提供的wsdl来完成短信业务,需要接收短信时就必须自己作为服务端,让电信网关当客户端调用。拿到wsdl生成服务端代码并完成自己的业务后,需要发布自己的接口。这时候就用网上提供的方法:
1.开启自己应用所在的tomcat(这个必须开启)
2.cmd到WEB-INF路径下,使用
>java -Djava.ext.dirs=lib org.apache.
axis.client.AdminClient -lhttp://localhost:8080/AxisWebService/services/AdminService deploy.wsdd

[b]说明[/b]:deploy.wsdd是服务端代码生成后生出的文件,手动把它放在WEB-INF下,需要根据这个文件生成server-config.wsdd才是对外发布webservice接口。AdminClient是Axis-1.*.jar提供的工具类,可以完成这个功能。命令行里直接输入java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient可以看到这个命令的帮助信息。

第二步完成后如果成功就能在WEB-INF下看到需要的文件了,但报错:
[img]http://dl2.iteye.com/upload/attachment/0097/3595/7dad2664-6c8a-30fa-81b6-92271cf8e9d1.bmp[/img]

这就是说后面带的参数找不到,很多网上都直接提供这个参数,我还以为是axis包里自带的呢,后来查到[url]http://www.360doc.com/content/11/0711/11/16915_132858375.shtml[/url]说明这个是配置的servlet,要按自己实际的工程填写,原来这样,在web.xml里配置:

<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</servlet>

<!--不要下面注释掉的这样配置,这样会拦截掉所有请求,导致只能请求webservice,其他页面都无法访问-->
<!--<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>-->

<!--可以下面这样配置,这样访问http://localhost:8080/工程name/services/可以展示所有通过axis发布的webservice服务,访问http://localhost:8080/工程name/services/webservice服务名?wsdl可以查看wsdl文件-->
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<display-name>查看Services列表</display-name>
<url-pattern>/services/</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<display-name>Services地址</display-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>

重启tomcat后输入:
>java -Djava.ext.dirs=lib org.apache.
axis.client.AdminClient -lhttp://localhost:8080/smsplatform/services/AxisServlet deploy.wsdd


返回:
Processing file deploy.wsdd
<Admin>Done processing</Admin>

查看server-config.wsdd文件已生成,在浏览器里测试:
http://localhost:8080/smsplatform/services/SmsNotification?wsdl
返回的是wsdl文件,成功。这里的smsplatform是应用的根目录,SmsNotification是server-config.wsdd文件的service的name。

[img]http://dl2.iteye.com/upload/attachment/0098/1822/f89eadf3-146c-3c03-881e-8d62b29ce5e7.bmp[/img]
[img]http://dl2.iteye.com/upload/attachment/0098/1824/35f4205d-fd91-3339-bbaf-5f2de84ce444.bmp[/img]

wsdl文件最后绑定的地址是可以修改的,但注意跟AxisServlet的servlet-mapping要对应。再次声明使用tuscany来发布webservice比这简单好多。

【错误:】[color=red]最后最后,把添加的servlet去掉,发布的工程里不需要这个。[/color]
【更正2014-06-17:】servlet的配置不能删掉,需要访问axis发布的webservice必须使用这个servlet的配置。之前发布好之后工作暂停,注释之后继续了其他工作,没有验证,得出了错误的结论,自以为是了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值