jboss throws Unmarshalling error: нулевая веб-служба проверки подписи вызова - PullRequest
0 голосов
/ 27 сентября 2018

Я отправляю запрос на проверку в веб-службу esignature с сгенерированным кодом из wsdl, предоставленного здесь:

https://ec.europa.eu/cefdigital/DSS/webapp-demo/services/

Wsdl - это служба SoapDocumentValidationService.

проверка корректно работает с моим тестером, выполняющимся из eclipse, и с службой проверки, работающей на apache-tomcat-8.5.31.

Но когда я пытаюсь запустить тест из навигатора с помощью jboss-5.2.0 (с устранением ошибки cxf) для развертывания приложения jboss выдает «Unmarshalling error: null» в возвращаемом xml из веб-службы, предположительно из-за несовместимости с некоторыми библиотеками или методами.

У апача нетлюбые ошибки, и проверка там кажется нормальной.

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>    

  <artifactId>pluginsib-validatesignature-esginature</artifactId>
  <groupId>org.enterprise.pluginsib.validatesignature</groupId>
  <packaging>jar</packaging>
  <version>2.0.0</version>
  <name>PluginsIB - Validate Signature - ESignature</name>

  <parent>
    <groupId>org.enterprise.pluginsib.validatesignature</groupId>  
    <artifactId>pluginsib-validatesignature</artifactId>
    <version>2.0.0</version>   
  </parent>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!-- JBoss dependency versions -->  
    <version.org.jboss.spec.jboss.javaee.6.0>3.0.0.Final</version.org.jboss.spec.jboss.javaee.6.0>  
    <cxf.version>2.2.12</cxf.version>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.jboss.spec</groupId>
        <artifactId>jboss-javaee-6.0</artifactId>
        <version>${version.org.jboss.spec.jboss.javaee.6.0}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies> 
  </dependencyManagement>

  <repositories>  
    <repository>
      <id>java.net-m2</id>
      <name>java.net - Maven 2</name>
      <url>https://repository.jboss.org/nexus/content/repositories/java.net-m2</url>
    </repository>

    <repository>
      <id>maven-nuxeo</id>
      <name>Maven Nuxeo Repository</name>
      <url>https://maven.nuxeo.org/nexus/content/groups/public/</url>
      <layout>default</layout>
      <releases>
        <enabled>true</enabled>
        <updatePolicy>never</updatePolicy>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>never</updatePolicy>
      </snapshots>
    </repository>

    <!-- Requerim GENAPP i PLUGINSIB -->
    <repository>
      <id>github-governib-maven</id>
      <name>GitHub GovernIB Maven Repository</name>
      <url>https://governib.github.io/maven/maven/</url>
    </repository>
  </repositories>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.5.1</version>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
      <!--<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.1</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <filters>
                <filter>
                  <artifact>org.enterprise.genapp:genapp-core</artifact>
                  <includes>
                    <include>org/enterprise/genapp/common/i18n/I18N*.*</include>
                    <include>org/enterprise/genapp/common/ws/Ws*Adapter.*</include>
                  </includes>
                </filter>
              </filters>
            </configuration>
          </execution>
        </executions>
      </plugin>-->

      <!--XXX<plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.6</version>
        <executions>
          <execution>
            <id>copy-resources</id>             
            <phase>validate</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/src/main/resources</outputDirectory>
              <resources>          
                <resource>
                  <directory>${basedir}/../../logic/src/main/resources</directory>
                  <includes>
                    <include>logicmissatges_*.properties</include>
                    <include>genapp_*.properties</include>
                    <include>portafib_genapp_*.properties</include>
                  </includes>
                  <filtering>true</filtering>
                </resource>
              </resources>
              <overwrite>true</overwrite>
            </configuration>            
          </execution>
        </executions>
      </plugin>-->
    </plugins>

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <source>1.6</source>
            <target>1.6</target>
            <encoding>UTF-8</encoding>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <profiles>
    <profile>
      <id>regenerateapi</id>
      <activation>
        <activeByDefault>false</activeByDefault>
        <property>                  
          <name>regenerateapi</name>
        </property>
      </activation>
      <build>
        <plugins>
          <!--Java to WSDL Plugin-->
          <!--<plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-java2ws-plugin</artifactId>
            <version>${cxf.version}</version>
            <dependencies>
              <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-frontend-jaxws</artifactId>
                <version>${cxf.version}</version>
              </dependency>
              <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-frontend-simple</artifactId>
                <version>${cxf.version}</version>
              </dependency>
            </dependencies>
            <executions>
              <execution>
                <id>generate-wsdl-esignatureValidation.wsdl</id>
                <phase>generate-sources</phase>
                <configuration>
                  <className>eu.europa.esig.dss.validation.SoapDocumentValidationService</className>
                  <genWsdl>true</genWsdl>                         
                  <verbose>true</verbose>
                  <frontend>jaxws</frontend>
                  <databinding>jaxb</databinding>
                  <outputFile>${basedir}/src/main/resources/wsdl/esignatureValidation.wsdl</outputFile>
                  <argline>-s ${basedir}/code -portname EsignatureValidationWs -address http://localhost:8080/services/soap/validation?wsdl</argline>
                </configuration>
                <goals>
                  <goal>java2ws</goal>
                </goals>
              </execution>
            </executions>
          </plugin>-->

          <!--WSDL to Java Plugin-->
          <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>${cxf.version}</version>
            <executions>
              <execution>
                <id>generate-sources</id>
                <phase>generate-sources</phase>
                <configuration>
                  <bindingFiles>
                    <bindingFile>${project.basedir}/bindings/bindings.xjc</bindingFile>
                  </bindingFiles>
                  <sourceRoot>${project.basedir}/src/main/java</sourceRoot>
                  <defaultOptions> 
                    <autoNameResolution>true</autoNameResolution>
                  </defaultOptions>
                  <wsdlOptions>
                    <wsdlOption>
                      <wsdl>${basedir}/src/main/resources/wsdl/esignatureValidation.wsdl</wsdl>
                      <packagenames>
                        <packagename>org.enterprise.pluginsib.validatesignature.esignature.ws</packagename>
                      </packagenames>
                      <!--<serviceName>SoapDocumentValidationService</serviceName>-->
                    </wsdlOption>
                  </wsdlOptions>
                </configuration>
                <goals>
                  <goal>wsdl2java</goal>
                </goals>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.1.1</version>
            <executions>
              <execution>
                <id>copy-dependencies</id>
                <phase>package</phase>
                <goals>
                  <goal>copy-dependencies</goal>
                </goals>
                <configuration>
                  <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
                  <overWriteReleases>false</overWriteReleases>
                  <overWriteSnapshots>false</overWriteSnapshots>
                  <overWriteIfNewer>true</overWriteIfNewer>
                </configuration>
              </execution>
            </executions>
          </plugin>



        </plugins>
      </build>
    </profile>
  </profiles>

  <dependencies>

    <dependency>  
      <groupId>org.jboss.ws.cxf</groupId>  
      <artifactId>jbossws-cxf-client</artifactId>  
      <version>4.1.1.Final</version>  
      <scope>provided</scope>  
    </dependency> 

    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.2</version>
      <scope>test</scope>
    </dependency>

    <!--<dependency>
      <groupId>eu.europa.ec.joinup.sd-dss</groupId>
      <version>5.3.1</version>
      <artifactId>dss-validation-soap-client</artifactId>
    </dependency>-->

    <dependency>
      <groupId>javax.mail</groupId>
      <artifactId>mailapi</artifactId>
      <version>1.4.3</version>
    </dependency>

    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcprov-jdk16</artifactId>
      <version>1.46</version>
      <scope>compile</scope>
    </dependency>

    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcmail-jdk16</artifactId>
      <version>1.46</version>
      <scope>compile</scope>
    </dependency>

    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bctsp-jdk16</artifactId>
      <version>1.46</version>
      <scope>compile</scope>
    </dependency>

    <dependency>
      <groupId>net.java.xades</groupId>
      <artifactId>jxades</artifactId>
      <version>0.1.5</version>
    </dependency>

    <dependency>
      <groupId>org.enterprise.pluginsib.validatesignature</groupId>
      <artifactId>pluginsib-validatesignature-api</artifactId>
      <version>2.0.0</version>
    </dependency>


  </dependencies>

</project>

Ошибка в jboss:

  13:16:17,167 INFO  [STDOUT] DefaultValidationEventHandler: [ERROR]: null
             Location: line 1
        13:16:17,171 WARNING [PhaseInterceptorChain] Interceptor for {http://validation.dss.esig.europa.eu/}SoapDocumentValidationServiceImplService#{http://validation.dss.esig.europa.eu/}validateSignature has thrown exception, unwinding now
        org.apache.cxf.interceptor.Fault: Unmarshalling Error: null
                at

      ****(A lot of trash)****

     org.enterprise.pluginsib.validatesignature.esignature.ESignatureValidateSignaturePlugin.validateSignature(ESignatureValidateSignaturePlugin.java:231)
                at org.enterprise.plugins.validatesignature.tester.ejb.ValidateSignatureEjb.validate(ValidateSignatureEjb.java:61)

Фрагмент построенияданные и запрос проверки:

SoapDocumentValidationService validationService;
    {
      SoapDocumentValidationServiceImplService service;
      URL wsdl = new URL(endpoint + "?wsdl");
      service = new SoapDocumentValidationServiceImplService(wsdl);
      validationService = service.getSoapDocumentValidationServiceImplPort();
      Map<String, Object> reqContext;
      reqContext = ((BindingProvider) validationService).getRequestContext();
      reqContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpoint);
    }

    //Declaration of REMOTEDOCUMENT
    RemoteDocument remSign = new RemoteDocument();
    RemoteDocument doc = null;
    byte[] sigData = validationRequest.getSignatureData();

    //Signature
    if (sigData != null) {
      remSign.setBytes(sigData);
      remSign.setDigestAlgorithm(null);
      remSign.setMimeType(getMimeType(sigData));
      remSign.setName(null);

      //Signed document
      byte[] docData = validationRequest.getSignedDocumentData();
      if (docData != null) {
        doc = new RemoteDocument();
        doc.setBytes(docData);
        doc.setDigestAlgorithm(null);
        doc.setMimeType(getMimeType(docData));
        doc.setName(null);
      }
    }

    //Final object to validate "DataToValidate"
    org.enterprise.pluginsib.validatesignature.esignature.ws.DataToValidateDTO dataToValidateDTO = new DataToValidateDTO();
    dataToValidateDTO.setSignedDocument(remSign);
    dataToValidateDTO.setOriginalDocument(doc);
    dataToValidateDTO.setPolicy(null);

    //Validacio del document
    org.enterprise.pluginsib.validatesignature.esignature.ws.WsReportsDTO signatureReport;
    ValidateSignatureResponse validateSignatureResponse = new ValidateSignatureResponse();

Обратите внимание, что это приложение ДОЛЖНО быть развернуто на jboss-5.2.0, и что плагин, который генерирует код из wsdl, это единственныйlow the coment:

«Плагин WSDL для Java» в файле pom.xml

Я подозреваю об ошибке или несовместимости с jboss, или о проблеме с генерацией кода, который автоматически присваивает именак классам с тем же именем, но я не уверен и не знаю, как ее решить, если это так.

* Если кто-то хочет получить полный след запроса jboss в комментариях, размерпревышает максимально допустимое количество символов.И извините за мой английский.

...