У меня проблемы с использованием аннотации @BeanParam

Я использую аннотации JAX-RS, и у меня проблемы с @BeanParam. Я использую Wildfly-Swarm и Maven. Следующие строки являются частью моей ошибки:

Мой пом.xml:

Я ввожу класс before в свою конечную точку следующим образом:

<modelVersion>4.0.0</modelVersion> 
<groupId>com.test.example</groupId> 
<artifactId>ws-be-example1</artifactId> 
<name>ws-be-example1</name>
<version>1.0.0-SNAPSHOT</version> 
<packaging>jar</packaging> 
<properties>
    <version.wildfly.swarm>2016.8.1</version.wildfly.swarm>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <failOnMissingWebXml>false</failOnMissingWebXml>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.wildfly.swarm</groupId>
            <artifactId>bom-all</artifactId>
            <version>${version.wildfly.swarm}</version>

            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>


<dependencies>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>

    <!-- Wildfly Swarm Fractions -->
    <dependency>
        <groupId>org.wildfly.swarm</groupId>
        <artifactId>logging</artifactId>
    </dependency>
    <dependency>
        <groupId>org.wildfly.swarm</groupId>
        <artifactId>jaxrs-cdi</artifactId>
    </dependency>
    <dependency>
        <groupId>org.wildfly.swarm</groupId>
        <artifactId>swagger</artifactId>
    </dependency>


    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.4.2</version>
    </dependency>

    <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
        <version>1.1</version>
    </dependency>
</dependencies>

<build>
    <finalName>ws-be-example1</finalName>

    <plugins>

        <plugin>
            <groupId>org.wildfly.swarm</groupId>
            <artifactId>wildfly-swarm-plugin</artifactId>
            <version>${version.wildfly.swarm}</version>

            <configuration>
                <mainClass>com.test.example.Main</mainClass>
                <properties>
                    <swarm.http.port>3001</swarm.http.port> 
                    <swarm.debug.port>5005</swarm.debug.port>
                </properties>

                <environment>
                    <EXAMPLE2_HOST>localhost</EXAMPLE2_HOST>
                    <EXAMPLE2_PORT>8082</EXAMPLE2_PORT>
                    <EXAMPLE2_CONTEXT>/example2/frame</EXAMPLE2_CONTEXT>
                </environment>
            </configuration>

            <executions>
                <execution>
                    <goals>
                        <goal>package</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

My bean:

package com.test.example.models;
import javax.ws.rs.FormParam;

public class User {


   @FormParam("nombre")
   private String nombre;

   @FormParam("apellido1")
   private String apellido1;

   @FormParam("apellido2")
   private String apellido2;

   @FormParam("direccion")
   private String direccion;

public User(String nombre, String apellido1, String apellido2, String direccion) {
    this.nombre = nombre;
    this.apellido1 = apellido1;
    this.apellido2 = apellido2;
    this.direccion = direccion;
}

public String getNombre() {
    return nombre;
}

public String getApellido1() {
    return apellido1;
}

public String getApellido2() {
    return apellido2;
}

public String getDireccion() {
    return direccion;
}
}

Прежде всего спасибо за помощь :)

@Path("/test")
@POST
@Produces(MediaType.APPLICATION_JSON)
public Response prueba(@BeanParam User user){
   return Response.ok().build();
}

Проблема решена ! Я забыл добавить пакет своего класса в JAXRSArchive...


person Ángel    schedule 02.05.2017    source источник
comment
Вам нужен конструктор по умолчанию в вашем классе компонентов. Это единственный поддерживаемый конструктор. Так что вам также понадобятся сеттеры   -  person Ken    schedule 02.05.2017
comment
2017-05-02 09:57:39,513 ИНФОРМАЦИЯ [org.wildfly.swarm.runtime.deployer] (основной) развертывание e15735ec-96f3-42f3-be84-4dbd08e05e0d.war 2017-05-02 09:57:39,543 ИНФОРМАЦИЯ [org .jboss.as.server.deployment] (поток службы MSC 1–7) WFLYSRV0027: запуск развертывания «e15735ec-96f3-42f3-be84-4dbd08e05e0d.war» (имя среды выполнения: «e15735ec-96f3-42f3-be84-4dbd08e05e0d .war") 2017-05-02 09:57:40,419 WARN [org.jboss.as.dependency.private] (поток службы MSC 1-4) WFLYSRV0018: Deployment "deployment.e15735ec-96f3-42f3-be84-4dbd08e05e0d. war» использует закрытый модуль («org.jboss.jts:main»), который может быть изменен или удален в будущих версиях без предварительного уведомления. 2017-05-02 09:57:40,488 ИНФОРМАЦИЯ [org.jboss.weld.deployer] (сервисный поток MSC 1-4) WFLYWELD0003: развертывание обработки сварки e15735ec-96f3-42f3-be84-4dbd08e05e0d.war 2017-05-02 09 :57:40,561 INFO [org.hibernate.validator.internal.util.Version] (поток службы MSC 1–4) HV000001: Hibernate Validator 5.2.3.Final 2017-05-02 09:57:40,861 ОШИБКА [org.jboss .msc.service.fail] (поток службы MSC 1–4) MSC000001: не удалось запустить службу jboss.deployment.unit». e15735ec-96f3-42f3-be84-4dbd08e05e0d.war». .StartException в службе jboss.deployment.unit. .jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:154) в org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) в org.jboss.msc.service.Se rviceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) в java .lang.Thread.run(Thread.java:745) Причина: java.lang.NoClassDefFoundError: com/test/example/models/User at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class. privateGetDeclaredMethods(Class.java:2701) в java.lang.Class.privateGetPublicMethods(Class.java:2902) в java.lang.Class.getMethods(Class.java:1615) в io.swagger.jaxrs.Reader.read(Reader .java:255) в io.swagger.jaxrs.Reader.read(Reader.java:147) в io.swagger.jaxrs.config.BeanConfig.setScan(BeanConfig.java:172) в org.wildfly.swarm.swagger. развертывание. SwaggerServiceActivator.activate(SwaggerServiceActivator.java:73) в org.jboss.as.server.deployment.service.ServiceActivatorProcessor.deploy(ServiceActivatorProcessor.java:74) в org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService. java:147) ... еще 5 Вызвано: java.lang.ClassNotFoundException: com.test.example.models.User from [Module "deployment.e15735ec-96f3-42f3-be84-4dbd08e05e0d.war:main" from Service Module Loader] в org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198) в org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:363) в org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java :351) на org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:93) ... еще 15   -  person Paul Samsotha    schedule 02.05.2017


Ответы (1)


Спасибо за помощь ребята ! :)

    JAXRSArchive deployment = ShrinkWrap.create(JAXRSArchive.class);

    deployment.setContextRoot("example1");
    deployment.addPackage("com.test.example.rest");
    deployment.addPackage("com.test.example.services");

    //I forgot to add this line
    deployment.addPackage("com.test.example.models");  

Похоже, проблема с интеграцией swagger. Можете ли вы попробовать удалить зависимость WF Swarm

    JAXRSArchive deployment = ShrinkWrap.create(JAXRSArchive.class);

    deployment.setContextRoot("example1");
    deployment.addPackage("com.test.example.rest");
    deployment.addPackage("com.test.example.services");

    //I forgot to add this line
    deployment.addPackage("com.test.example.models");  
и посмотреть, исправит ли это ошибку. Если да, поднимите вопрос issues.jboss.org/browse/SWARM с пример проекта для нас, чтобы воспроизвести с

person Ángel    schedule 03.05.2017