2012-05-16 3 views
3

Я новичок и для Maven, и для Axis2. Мой проект состоит из трех модулей: клиент, интерфейс и сервер. Служба основана на POJO. WSDL строится на серверном модуле. Интерфейсный модуль содержит общие элементы, такие как служебный интерфейс и фасоль.Рекомендации для Axis2 с Maven

Должен ли я генерировать (или копировать вручную) WSDL в интерфейсный модуль? Должен ли я генерировать код клиента в клиентском модуле? Является ли структура модулей нормально? Все, что я хочу сделать, это сделать процесс сборки автоматизированным, но строго структурированным.

ответ

6

это не приведет к очистке компонента, который вы называете «интерфейсом». для строительства веб-сервиса есть два основных подхода:

  • начало с WSDL (то есть договор/или дескриптор интерфейса службы)
  • начало с кодом (возможно Java интерфейс)

Я предлагаю первый подход, потому что вы не всегда можете контролировать обе стороны разработки. вы можете использовать второй подход, чтобы начать с определения wsdl (java2wsdl) или построить wsdl с помощью инструмента altova xmlspy.

Имея wsdl, вы можете использовать плагин wsdl2code axis2-maven для разработки WSS (сервер веб-службы). Этот плагин в версии 2.6.0 генерирует только исходный код вашего сервера, но вам необходимо разместить этот код внутри дистрибутива axis2-war или как компонент aar.

С помощью wsdl вы можете снова использовать плагин wsdl2code axis2-maven для создания WSC (клиентской части веб-службы). Вы можете указать в инструкции плагина, что вы хотите сгенерировать тестовый код. Вы можете использовать mvn generate-sources для генерации заглушки клиента, перемещения сгенерированных источников и изменения теста.

В обоих случаях вам необходимо создать первоначальный pom (в это время я не нашел официального и унифицированного или рекомендуемого пом). Вы можете искать в google для некоторых примеров оси pom.xml (например: http://wso2.org/library/90).

Ниже у меня есть некоторые XML, которые вы можете использовать для создания ПОМ (WSC):

<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> 
+0

я делаю управления сервера и клиента создание как и требуется переместить отдельные некоторые общие бобы в отдельный режим. Кажется, это не очень популярное решение, поэтому я собираюсь избавиться от интерфейса ... –

Смежные вопросы