2016-05-03 21 views
9

Geri kalan alammı belgelemek için swagger kullanmaya çalışıyorum ve biraz başarı kazandım, ancak kısıtlı kaynak parametreleri söz konusu olduğunda bir duvara çarpıyorum. JBoss RESTEasy'i hazır bekletme sağlayıcısı ve Jackson 2.x açıklamalı POJO'larla kullanıyorum. Ben vuruyorum sorun @ DecimalMin/@ DecimalMax ek açıklamalar Benswagger ve jboss ile javax doğrulama

java.lang.NoSuchMethodError: javax.validation.constraints.DecimalMin.inclusive()Z 

O swagger javax.validation.constraints daha yeni bir sürümünü kullanmaya çalışıyor görünüyor olsun karşılaşıldığında olduğunu. * (V1.1.0 .Final) kütüphanesi ve jboss eski bir versiyonunu kullanıyor (v1.0.0.GA). Uygun kütüphaneyi boşuna eklemek için düşünebileceğim herşeyi denedim.

<dependency> 
    <groupId>io.swagger</groupId> 
    <artifactId>swagger-jaxrs</artifactId> 
    <version>1.5.8</version> 
</dependency> 

Örnek POJO Parçacığı: Ben çok denedim

... 
import javax.validation.constraints.DecimalMax; 
import javax.validation.constraints.DecimalMin; 
... 
@JsonInclude(JsonInclude.Include.NON_NULL) 
@Generated("org.jsonschema2pojo") 
@JsonPropertyOrder({ 
    "altM", 
    "altDatum" 
}) 
public class Altitude { 
@JsonProperty("altM") 
@DecimalMin("-2000") 
@DecimalMax("10000") 
@NotNull 
private Double altM; 
... 

Çevre JBoss DAP 6.4.0.GA

Benim dayı girişi (pom.xml) 'dir şeylerin, ama daha fazla öğrendim, aşağıda benim bağımlılıklarımı düzeltmek için en alakalı iki girişimi olduğuna inanıyorum:

Denemesi 1:

<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-hibernatevalidator-provider</artifactId> 
    <version>3.0.16.Final</version> 
    <exclusions> 
     <exclusion> 
      <groupId>javax.validation</groupId> 
      <artifactId>validation-api</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 

Denemesi 2: açıkça javax.validation v1.1.0.Final ekleyin: & let swagger dahil hazırda doğrulayıcısından javax.validation dışla

<dependency> 
    <groupId>javax.validation</groupId> 
    <artifactId>validation-api</artifactId> 
    <version>1.1.0.Final</version> 
</dependency> 

Maven Bağımlılık ağacı (girişimi 1):

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @  MissionPlanningService --- 
[INFO] mil.army.cerdec.cpi.mcas:MissionPlanningService:war:0.0.2-SNAPSHOT 
[INFO] +- org.jboss.resteasy:resteasy-jaxrs:jar:3.0.16.Final:compile 
[INFO] | +- org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.0_spec:jar:1.0.0.Final:compile 
[INFO] | +- org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:jar:1.0.0.Final:compile 
[INFO] | +- javax.activation:activation:jar:1.1.1:compile 
[INFO] | +- org.apache.httpcomponents:httpclient:jar:4.3.6:compile 
[INFO] | | +- org.apache.httpcomponents:httpcore:jar:4.3.3:compile 
[INFO] | | +- commons-logging:commons-logging:jar:1.1.3:compile 
[INFO] | | \- commons-codec:commons-codec:jar:1.6:compile 
[INFO] | +- commons-io:commons-io:jar:2.1:compile 
[INFO] | +- net.jcip:jcip-annotations:jar:1.0:compile 
[INFO] | \- org.jboss.logging:jboss-logging:jar:3.1.4.GA:compile 
[INFO] +- org.jboss.resteasy:resteasy-hibernatevalidator-provider:jar:3.0.16.Final:compile 
[INFO] | +- org.hibernate:hibernate-validator:jar:4.3.1.Final:compile 
[INFO] | \- org.jboss.weld.se:weld-se:jar:2.1.0.Final:compile 
[INFO] +- commons-lang:commons-lang:jar:2.6:compile 
[INFO] +- org.jboss.resteasy:resteasy-jackson2-provider:jar:3.0.16.Final:compile 
[INFO] | +- com.fasterxml.jackson.core:jackson-core:jar:2.6.3:compile 
[INFO] | +- com.fasterxml.jackson.core:jackson-databind:jar:2.6.3:compile 
[INFO] | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.6.3:compile 
[INFO] | \- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.6.3:compile 
[INFO] |  +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.6.3:compile 
[INFO] |  \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.6.3:compile 
[INFO] \- io.swagger:swagger-jaxrs:jar:1.5.8:compile 
[INFO] +- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.4.5:compile 
[INFO] | \- org.yaml:snakeyaml:jar:1.12:compile 
[INFO] +- com.fasterxml.jackson.dataformat:jackson-dataformat-xml:jar:2.4.5:compile 
[INFO] | \- org.codehaus.woodstox:stax2-api:jar:3.1.4:compile 
[INFO] +- io.swagger:swagger-core:jar:1.5.8:compile 
[INFO] | +- org.apache.commons:commons-lang3:jar:3.2.1:compile 
[INFO] | +- org.slf4j:slf4j-api:jar:1.6.3:compile 
[INFO] | +- com.fasterxml.jackson.datatype:jackson-datatype-joda:jar:2.4.5:compile 
[INFO] | | \- joda-time:joda-time:jar:2.2:compile 
[INFO] | +- io.swagger:swagger-models:jar:1.5.8:compile 
[INFO] | | \- io.swagger:swagger-annotations:jar:1.5.8:compile 
[INFO] | \- javax.validation:validation-api:jar:1.1.0.Final:compile 
[INFO] +- javax.ws.rs:jsr311-api:jar:1.1.1:compile 
[INFO] +- org.reflections:reflections:jar:0.9.10:compile 
[INFO] | +- org.javassist:javassist:jar:3.19.0-GA:compile 
[INFO] | \- com.google.code.findbugs:annotations:jar:2.0.1:compile 
[INFO] \- com.google.guava:guava:jar:18.0:compile 

benim soru yani: nasıl Swagger JBoss RESTEasy & Hazırda Validator ile kullanılır?

P.S. Yağma/jboss/javaee için yeniyim, bu yüzden lütfen aptalca soruları affedin ve daha fazla bilgi istemekte tereddüt etmeyin. Tam olarak burada ne sağladığımdan emin değilim.

+0

ne tür: Doğru doğrulama kütüphaneye JBoss işaret Sonra

$JBOSS_HOME/modules/system/layers/base/javax/validation/api/main 

bu? JBoss EAP veya WildFly gibi bir Java EE kabı? Ya da Java SE stili, Tomcat vb? Ve bağımlılık grafiği (mvn bağımlılık: ağaç) gönderebilir misiniz? – Gunnar

+0

Soruya eklendi. Çevre JBoss EAP 6.4.0.GA. Yukarıdaki # 1 girişimi için Bağımlılık ağacı. – Jeremy

+0

# 1 deneyimini anlatabildiğim kadarıyla beklediğim şeyi yapıyor ve uygun sürümle birlikte javax.validation kütüphanelerini dahil ediyor. Bu yüzden NoSuchMethodError'u neden alıyorum diye şaşkınım ... – Jeremy

cevap

0

JBoss EAP, doğrulama kütüphanesinin kendi sürümünü (eski bir sürüm) sağlıyordu.

Doğru doğrulama .jar dosyasına mümkün kopyasıydı ve en module.xml dosyasını düzenleyin: çevrenin

... 

<module xmlns="urn:jboss:module:1.1" name="javax.validation.api"> 
    <resources> 
     <!-- OLD ONE: <resource-root path="validation-api-1.0.0.GA-redhat-3.jar"/> --> 
     <!-- NEW ONE BELOW: --> 
     <resource-root path="validation-api-1.1.0.Final.jar"/> 
     <!-- Insert resources here --> 
    </resources> 
    <dependencies> 
     <module name="org.jboss.logging"/> 
    </dependencies> 
</module>