今天尝试用axis2进行SOA的开发,遇到一些,记录下来,备自己以后查阅
1. 下载axis2.war,复制到tomcat的webapps目录下
2. 启动tomcat,访问http://localhost:8080/axis2/
3. 下载axis2-eclipse-codegen-wizard-1.4.zip和axis2-eclipse-codegen-wizard-1.4.zip,解压到eclipse的plugins目录
4. 新建ws工程,把tomcat下axis2/lib下所以jar包添加为用户库。新建java文件
package ws.example;
/**
* Temperature Converter Implementation Class
*/
public class TemperatureConverter {
/**
* util method to convert celsius to fahrenheit
* @param cValue : double value of celsius
* @return calculated value of fahrenheit
*/
public double c2fConvertion(double cValue) {
return ((cValue * 9.0)/5.0 )+ 32.0;
}
/**
* util method to convert fahrenheit to celsius
* @param fValue : double value of fahrenheit
* @return calculated value of celsius
*/
public double f2cConvertion(double fValue) {
return ((fValue - 32.0) * 5.0) / 9.0;
}
}
5. 新建Axis2 Eclipse Service Archiver,文件为刚才工程class文件的路径,classname注意,文件路径+classname能找到这个class,这个错误,花了半天才找到,郁闷。
6. 再次访问http://localhost:8080/axis2/,点击services
1.根据wsdl生成code的时候,总是报"java.lang.reflect.InvocationTargetException".以为是版本的问题,换了几个axis包还是不行。google。。。
本人用的eclipse 3.2, 新建一个Fragment工程,ID为Axis2_codegen_wizard,从左边选中添加。然后点击MANIFEST.MF中 Launch an Eclipse application in Debug mode, 在新的eclipse中执行刚才的generate code from wsdl过程,在Fragment eclipse 的控制台,会看到具体的异常 javax/xml/stream/XMLStreamException. 到findjar.com输入“javax/xml/stream/XMLStreamException”. 找到 stax-api-1.0.1.jar. 同理找到backport-util-concurrent-3.1.jar。把这两个jar包copy到eclipse的axis2 plugin的lib目录下,同时修改plugin.xml,重试,OK。但是在原来的Eclipse中还是同样的错误,原来是因为,Eclipse有自己的缓存目录,如果插件版本号没有更新它是不会更新安装的,要手动找到并删除对应插件. 清除缓存最简单的方式是删除Eclipse的configuration目录下的所有文件夹(保留config.ini文件),还可以通过启动参数-clean启动。至此,终于大功告成了。
参考文档:
1. http://wso2.org/library/1719
2. http://wso2.org/library/1986
3. http://blogiterox.wordpress.com/2008/10/24/exploring-apache-axis2-and-eclipse-plug-in-development/