Axis2与Maven的最佳实践

Axis2与Maven的最佳实践,maven,code-generation,axis2,Maven,Code Generation,Axis2,我对Maven和Axis2都是新手。我的项目由三个模块组成:客户端、接口和服务器。服务是基于POJO的。正在服务器模块上构建WSDL。接口模块包含诸如服务接口和bean之类的常见内容 我应该生成(或手动复制)WSDL到接口模块中吗?我应该在客户端模块生成客户端代码吗?模块结构正常吗?我所希望做的就是使构建过程自动化,但严格结构化。这并不能清除您称之为“接口”的组件。 对于web服务构建,有两种主要方法: 从wsdl(即契约/或服务接口描述符)开始 从代码开始(可能是java接口) 我建议使用

我对Maven和Axis2都是新手。我的项目由三个模块组成:客户端、接口和服务器。服务是基于POJO的。正在服务器模块上构建WSDL。接口模块包含诸如服务接口和bean之类的常见内容


我应该生成(或手动复制)WSDL到接口模块中吗?我应该在客户端模块生成客户端代码吗?模块结构正常吗?我所希望做的就是使构建过程自动化,但严格结构化。

这并不能清除您称之为“接口”的组件。 对于web服务构建,有两种主要方法:

  • 从wsdl(即契约/或服务接口描述符)开始
  • 从代码开始(可能是java接口)
我建议使用第一种方法,因为并非总是可以控制开发的双方。您可以使用第二种方法从wsdl定义(java2wsdl)开始,或者使用altova xmlspy工具构建wsdl

有了wsdl,您可以使用axis2 maven wsdl2code插件来开发WSS(web服务服务器端)。版本2.6.0中的此插件仅生成服务器的源代码,但您需要将此代码托管在axis2 war发行版中或作为aar组件

有了wsdl,您可以再次使用axis2 maven wsdl2code插件来生成WSC(web服务客户端)。您可以在插件指令中指定要生成测试代码的插件。您可以使用mvn生成源来生成客户端存根、移动生成的源并修改测试

在这两种情况下,您都需要构建初始pom(这次我还没有找到一个正式的统一的或推荐的pom)。您可以在google中搜索一些pom.xml axis示例(即:)

下面是一些可用于构建pom(WSC)的xml:


4.0.0
您的\u组\u id
您的\u工件\u id
罐子
1.0-快照
您的\u工件\u id
http://your_url
朱尼特
朱尼特
4.8.1
测试
javax.servlet
servlet api
2.5
假如
javax.servlet.jsp
jsp api
2.1
假如
org.apache.axis2
axis2
${axis2.version}
org.apache.axis2
axis2本地传输
${axis2.version}
org.apache.axis2
axis2传输http
${axis2.version}
org.apache.axis2
axis2代码发生器
${axis2.version}
假如
org.apache.rampart
城墙核心
${axis2.version}
org.slf4j
slf4j-jdk14
log4j-over-slf4j
org.slf4j
org.slf4j
slf4j api
${slf4j.version}
org.slf4j
slf4j-log4j12
${slf4j.version}
log4j
log4j
org.slf4j
jcl-over-slf4j
${slf4j.version}
log4j
log4j
${log4j.version}
jmxtools
com.sun.jdmk
jmxri
com.sun.jmx
邮件
javax.mail
jms
javax.jms
org.mortbay.jetty
maven jetty插件
org.apache.maven.plugins
maven编译器插件
2.0.2
1.6
1.6
org.apache.maven.plugins
maven战争插件
2.0.2
${project.artifactId}
org.apache.axis2
axis2-wsdl2code-maven-plugin
${axis2.version}
wsc_01
wsdl2code
${codegen.wsc_01.wsdl uri}
${codegen.wsc_01.package name}
${codegen.wsc_01.namespace map}
${codegen.wsc.target dir}
亚行
同步
假的
真的
真的
JAVA
1.6.3  
1.2.15
1.6.0
1.6.0
wsdl\相对\路径\或url
您的\u根\u包
http://your_url_namespace=your_java_namespace_mapped
目标/生成的源代码/axis2/wsdl2code
org.slf4j
slf4j-jdk14
1.5.2

我确实控制服务器和客户端的创建,并希望将一些常用bean移动到单独的模式。这似乎不是一个很流行的解决方案,所以我要去掉接口模块。。。
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>your_group_id</groupId>
      <artifactId>your_artifact_id</artifactId>
      <packaging>jar</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>your_artifact_id</name>
      <url>http://your_url</url>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.8.1</version>
          <scope>test</scope>
        </dependency>

        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>servlet-api</artifactId>
          <version>2.5</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.1</version>
          <scope>provided</scope>
        </dependency>

        <!-- axis2/axiom: dependencies -->
        <dependency>
              <groupId>org.apache.axis2</groupId>
              <artifactId>axis2</artifactId>
              <version>${axis2.version}</version>
        </dependency>
        <dependency>  
           <groupId>org.apache.axis2</groupId>  
           <artifactId>axis2-transport-local</artifactId>  
           <version>${axis2.version}</version>  
        </dependency>
        <dependency>  
           <groupId>org.apache.axis2</groupId>  
           <artifactId>axis2-transport-http</artifactId>  
           <version>${axis2.version}</version>  
        </dependency>         
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-codegen</artifactId>
            <version>${axis2.version}</version>
            <scope>provided</scope>
        </dependency>   

        <!-- axis2-rampart: dependencies -->
        <dependency>
            <groupId>org.apache.rampart</groupId>
            <artifactId>rampart-core</artifactId>
            <version>${axis2.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-jdk14</artifactId>
                </exclusion>
                <exclusion>
                    <artifactId>log4j-over-slf4j</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- slf4j: dependencies -->
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>${slf4j.version}</version>
        </dependency>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>${slf4j.version}</version>
          <!-- 
          <scope>runtime</scope>
          -->
          <exclusions>
            <exclusion>
                <artifactId>log4j</artifactId>
                <groupId>log4j</groupId>
            </exclusion>
          </exclusions>
        </dependency> 
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>jcl-over-slf4j</artifactId>
          <version>${slf4j.version}</version>
        </dependency>
        <!-- log4j: dependencies -->
        <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>${log4j.version}</version>
          <exclusions>
            <exclusion>
                <artifactId>jmxtools</artifactId>
                <groupId>com.sun.jdmk</groupId>
            </exclusion>
            <exclusion>
                <artifactId>jmxri</artifactId>
                <groupId>com.sun.jmx</groupId>
            </exclusion>
            <exclusion>
                <artifactId>mail</artifactId>
                <groupId>javax.mail</groupId>
            </exclusion>
            <exclusion>
                <artifactId>jms</artifactId>
                <groupId>javax.jms</groupId>
            </exclusion>
          </exclusions>
        </dependency>

        <!-- other: dependencies -->
      </dependencies>


      <build>
        <plugins>
          <plugin>
              <groupId>org.mortbay.jetty</groupId>
              <artifactId>maven-jetty-plugin</artifactId>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.0.2</version>
            <configuration>
              <source>1.6</source>
              <target>1.6</target>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.0.2</version>
            <configuration>
              <warName>${project.artifactId}</warName>
            </configuration>
          </plugin>

          <plugin>
              <groupId>org.apache.axis2</groupId>
              <artifactId>axis2-wsdl2code-maven-plugin</artifactId>
              <version>${axis2.version}</version>
              <executions>
                  <execution>
                    <id>wsc_01</id>
                    <goals>
                        <goal>wsdl2code</goal>
                    </goals>
                    <configuration>
                        <wsdlFile>${codegen.wsc_01.wsdl-uri}</wsdlFile>
                        <packageName>${codegen.wsc_01.package-name}</packageName>
                        <namespaceToPackages>${codegen.wsc_01.namespace-map}</namespaceToPackages>
                        <outputDirectory>${codegen.wsc.target-dir}</outputDirectory>
                        <databindingName>adb</databindingName>
                        <syncMode>sync</syncMode>
                        <generateServerSide>false</generateServerSide>
                        <generateServicesXml>true</generateServicesXml>
                        <generateTestcase>true</generateTestcase>
                        <language>java</language>
                    </configuration>
                  </execution>
                  <!-- other wsc-generation params -->
              </executions>
          </plugin> 

        </plugins>

      </build>

        <properties>
            <slf4j.version>1.6.3</slf4j.version>  
            <log4j.version>1.2.15</log4j.version>
            <axis2.version>1.6.0</axis2.version>
            <rampart.version>1.6.0</rampart.version>

            <!-- codegen.client.properties -->

            <codegen.wsc_01.wsdl-uri>wsdl_relative_path_or_url</codegen.wsc_01.wsdl-uri>
            <codegen.wsc_01.package-name>your_root_package</codegen.wsc_01.package-name>
            <codegen.wsc_01.namespace-map>http://your_url_namespace=your_java_namespace_mapped</codegen.wsc_01.namespace-map>

            <codegen.wsc.target-dir>target/generated-sources/axis2/wsdl2code</codegen.wsc.target-dir>
        </properties>
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-jdk14</artifactId>
                    <version>1.5.2</version>
                </dependency>
            </dependencies>
        </dependencyManagement>
    </project>