Я отправляю запрос на проверку в веб-службу 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 в комментариях, размерпревышает максимально допустимое количество символов.И извините за мой английский.