wsdl2code插件可以将指定的WSDL文件自动生成axis的客户端和服务器端存根代码,这样大大减少了写web service的实现和调用代码量。这个插件有基于eclipse的,也有基于maven2的,今天尝试用maven2来生成客户端代码,下面记录实现步骤:
1. 修改项目根目录下的pom.xml文件,添加如下plugin:
<plugin>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-wsdl2code-maven-plugin</artifactId>
<version>1.5.1</version>
<executions>
<execution>
<id>wsdl2code</id>
<goals>
<goal>wsdl2code</goal>
</goals>
<configuration>
<packageName>com.wisdom.axis.services</packageName>
<wsdlFile>src/main/wsdl/SimpleService.wsdl</wsdlFile>
<databindingName>xmlbeans</databindingName>
</configuration>
</execution>
</executions>
</plugin>
解释下,packageName: 生成的客户端存根类所用到的包名,wsdlFile: 指定wsdl文件所处的路径, databindingName: 指定数据绑定的框架,用来生成客户端代码。默认情况下是adb, 这里用xmlbeans是基于apache的xmlbeans框架对wsdl文件进行解析。如果想要生成服务器端代码,需要在configuration下面将generateServerSide和generateServerSideInterface设为true。默认情况下它们都是false.
2. 加入依赖包:
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2</artifactId>
<version>1.5.1</version>
<type>pom</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.4.0</version>
</dependency>
3. 设置好后,可以通过命令行进入到pom文件所在的目录,运行命令: mvn axis2-wsdl2code:wsdl2code。 这里可能会遇到下面的异常:
[ERROR]BUILD ERROR
------------------------------------------------------------------------
Internal error in the plugin manager executing goal
'org.apache.axis2:axis2-wsdl2code-maven-plugin:1.4.1:wsdl2code': Unable to
find the mojo
'org.apache.axis2:axis2-wsdl2code-maven-plugin:1.4.1:wsdl2code' in the
plugin 'org.apache.axis2:axis2-wsdl2code-maven-plugin'
org.apache.axis2.wsdl.codegen.CodeGenerationException
------------------------------------------------------------------------
For more information, run Maven with the -e switch
------------------------------------------------------------------------
Total time: 1 minute 58 seconds
Finished at: Wed Feb 10 14:37:26 PST 2010
Final Memory: 16M/41M
这个应该是网络问题,有一个临时解决方案,就是在~\.m2下面创建一个settings.xml文件,并且加入下面的的mirrors:
<settings>
<mirrors>
<mirror>
<id>java.net.2</id>
<name>java.net Mirror of http://repo1.maven.org/maven2/</name>
<url>http://download.java.net/maven/2/</url>
<mirrorOf>java.net</mirrorOf>
</mirror>
</mirrors>
</settings>
具体的可以参考http://stackoverflow.com/questions/2206687/how-can-i-setup-dependencies-for-axis2-axiom-on-maven2
请保证上面设置后将 ~/.m2/repository/org/apache/axis2
下的文件全部删除掉,然后再运行mvn axis2-wsdl2code:wsdl2code
找到客户端代码位于/target/generated-sources/axis2/wsdl2code/src/com/wisdom/axis/services/。