dialog designer调用webservice

前言:

这一次的搭建再次反映了基本功的不扎实。

一切的根源就是最最简单的环境变量的配置。

就是classpath的配置。

这个问题让我纠结了好久。

关键字:axis生成wsdl

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

好了,正式开始。

先总的说一下我用到的东西:

axis1.4+tomcat6+myecplise+dialog designer5.0.1。

dialog designer调用webservice,和其他普通的java程序调用webservice是一样的。

我们首先要制作出一个webservice出来。

1、先制作出一个接口或者普通的java类出来。

里面含有真正的业务逻辑,比如去查询DB,更新DB之类的。

搞清楚接受的参数,返回值等等,这些都比较容易理解。

ps:可以用myeclipse新建一个web工程,然后将deploy的东西拷贝到axis\WEB-INF\classes下面。

2、关键的一步。

将此类转化成wsdl,转换成这个是因为dialog designer需要这个东西。

关键代码:

java org.apache.axis.wsdl.Java2WSDL -o wp.wsdl    -l"http://localhost:8080/axis/services/HelloWorldWSDD"     -n  "urn:Example6" -p"webservice.axis.wsdd" "urn:Example6"     webservice.axis.wsdd.HelloWorldWSDD
 

下面进行详细说明:

这一段很多人都会不成功。

1、原因就是基本不扎实。对环境变量classpath的理解不深。

java必须要配在环境变量的path里面的,这个大家都知道。

org.apache.axis.wsdl.Java2WSDL,它是axis里面的一个类。

可是我调试了将近3小时,都提示说找不到无main class之类的。

一直很不明白,到底错在了哪。

后来逐渐发现,原来是在环境变量中根本找不到这个类。环境变量配的没起作用,擦!

于是将这个类所在的jar包直接放到classpath中,结果就对了!

因为这个类又引用了别的类,所以最好是自己建一个变量%MYCP%\,指向%TOMCAT_HOME%\webapps\WEB-INF\lib,比如%MYCP%\axis.jar;%MYCP%\jaxrpc.jar;%MYCP%\log4j-1.2.8.jar;%MYCP%\commons-logging-1.0.4.jar;%MYCP%\commons-discovery-0.2.jar;%MYCP%\wsdl4j-1.5.1.jar;

2、-o wp.wsdl,表明生成的wsdl文件将会是这样

-lhttp://localhost:8080/axis/services/HelloWorldWSDD,表明是这个webservice的地址,但在dialog designer中不能这样引用。

-n  "urn:Example6" 表示命名空间,随便起。

-p"webservice.axis.wsdd" "urn:Example6" 表明对应的包名,可以对应多个。

webservice.axis.wsdd.HelloWorldWSDD 表明源文件,所以必须要在%TOMCAT_HOME%\webapps\WEB-INF\classes的目录下运行这个命令,否则就会提示说缺少webservice.axis.wsdd.HelloWorldWSDD。

3、好了,在浏览器里输入http://localhost:8080/axis/services/HelloWorldWSDD?wsdl,如果生成了XML文件,说明成功了。

4、这一步是反相生成java文件,以及deploy.wsdd文件等等。。我也不知道有没有这个必要。但是官网这样操作了,先这样操作吧。

命令如下:

java org.apache.axis.wsdl.WSDL2Java -o . -d Session -s -S true    -Nurn:Example6 webservice.axis.wsdd.HelloWorldWSDD wp.wsdl

 这样在%TOMCAT_HOME%\webapps\WEB-INF\classes\webservice\axis\wsdd就会生成一个HelloWorldWSDD文件夹。

5、既然wsdl制作好了,那么在dialog designer新建一个webservice文件,先输入wsdl文件的URL,然后在里面设置好输入参数,输出参数就行了。点击Load如果成功通过,就OK了。错了会提示错误给我们的。

6、其实无论是webservice,还是DB,都相当于一个取数据的控件而已。

参考资料:1、http://ws.apache.org/axis/java/user-guide.html#Java2WSDLBuildingWSDLFromJava(官方制作wsdl的步骤)

2、http://wandejun1012.iteye.com/admin/blogs/1207806(我自己写的,搭建一个比较简单的webservice的步骤)

3、http://www.docin.com/p-155079221.html(没怎么参照,不过里面说会用到JDK1.6自带的服务器,亮了。我还没试过。)

猜你喜欢

转载自wandejun1012.iteye.com/blog/1208367