前言:
这一次的搭建再次反映了基本功的不扎实。
一切的根源就是最最简单的环境变量的配置。
就是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自带的服务器,亮了。我还没试过。)