Estoy tratando de cargar un proyecto simple de servicio REST maven en JBoss AS 7.0 ya que el tarro de resteasy proporciona un problema de seguridad, estoy tratando de reemplazar el resteasy con jersey. 1.Mi archivo web.xml ::

<web-app id="WebApp_ID" version="2.4"
 xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 <display-name>addjersey</display-name>
 <context-param>
     <param-name>resteasy.scan</param-name>
     <param-value>false</param-value>
 </context-param>
 <context-param>
     <param-name>resteasy.scan.providers</param-name>
     <param-value>false</param-value>
 </context-param>
 <context-param>
     <param-name>resteasy.scan.resources</param-name>
     <param-value>false</param-value>
 </context-param>
 <servlet>
     <servlet-name>jersey-servlet</servlet-name>
     <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
     <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
     <servlet-name>jersey-servlet</servlet-name>
     <url-pattern>/rest/*</url-pattern>
 </servlet-mapping>
</web-app>

2.Mi archivo jboss-deploy-structure.xml :::

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <exclude-subsystems>
            <subsystem name="resteasy" />
        </exclude-subsystems>
        <exclusions>
            <module name="javaee.api" />
            <module name="javax.ws.rs.api" />
            <module name="org.jboss.resteasy.resteasy-jaxrs" />
        </exclusions>
        <local-last value="true" />
    </deployment>
</jboss-deployment-structure>
  1. Mi archivo pom.xml :::
<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>addjersey</groupId>
    <artifactId>addjersey</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>2.0.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-server</artifactId>
            <version>1.9</version>
        </dependency>
    </dependencies>
</project>
  1. Punto final del servidor :::
public class RestApiImpl {
    @GET
    @Path("/merchant")
    @Produces(MediaType.TEXT_PLAIN)
    public String getMerchantDetails() {
      System.out.println("request received");
        return "success";
    }
}

Cuando ejecuto el servidor jboss, la guerra se despliega sin ningún error. Pero cuando hago una llamada de descanso http: // localhost: 8080 / addjersey / merchant / , la respuesta del servidor es 404 y no hay excepciones ni registros están rodando Soy nuevo en JBOSS y no puedo entender qué me falta exactamente aquí o si necesito agregar alguna configuración adicional. Seguí este enlace pero no ayudó.

0
Subhash Narkedamilli 25 jun. 2020 a las 12:44

2 respuestas

La mejor respuesta

Me está funcionando después de hacer los cambios en los siguientes archivos 1.pom.xml file :::

<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>addjersey</groupId>
    <artifactId>addjersey</artifactId>
    <version>1</version>
    <packaging>war</packaging>
    <dependencies>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20180813</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-client</artifactId>
            <version>1.19</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-core</artifactId>
            <version>1.19</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-json</artifactId>
            <version>1.19</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-server</artifactId>
            <version>1.19</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-servlet</artifactId>
            <version>1.19</version>
        </dependency>
        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>jsr311-api</artifactId>
            <version>1.1.1</version>
        </dependency>

    </dependencies>
    <build>
        <finalName>addjersey</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
</project>

2.ApplicationConfig.java :::

import java.util.HashSet;
import java.util.Set;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("/")
public class ApplicationConfig extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> resources = new HashSet<Class<?>>();
        resources.add(RestApiCall.class);
        return resources;
    }

}

3.web.xml

<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>addjersey</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
    <!-- <servlet>
        <servlet-name>Jersey REST Service</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey REST Service</servlet-name>
        <url-pattern>/api/*</url-pattern>
    </servlet-mapping> -->
     <context-param>
        <param-name>resteasy.scan</param-name>
        <param-value>false</param-value>
    </context-param>
    <context-param>
        <param-name>resteasy.scan.providers</param-name>
        <param-value>false</param-value>
    </context-param>
    <context-param>
        <param-name>resteasy.scan.resources</param-name>
        <param-value>false</param-value>
    </context-param> 
</web-app>

4. Punto final del servidor ::

@Path("/api")
public class RestApiCall extends Application {
    @GET
    @Path("/merchant")
    public String printAccountDetails() {
      System.out.println("request received");
        return "index";
    }
}

No se requiere configuración para el archivo jboss-deploy-structure.xml.

0
Subhash Narkedamilli 1 jul. 2020 a las 07:02

Supongo que no tienes una clase de aplicación:

@ApplicationPath("/your-rest-path")
public class ApplicationConfig extends Application {
}

O una asignación de servlet:

  <servlet>
      <servlet-name>javax.ws.rs.core.Application</servlet-name>
  </servlet>
  <servlet-mapping>
      <servlet-name>javax.ws.rs.core.Application</servlet-name>
      <url-pattern>/your-rest-path/*</url-pattern>
  </servlet-mapping>

Por favor lea la documentación.

Personalmente me gusta el primer acercamiento.

Lea la documentación para obtener más información.

https://access.redhat.com/documentation/en-us/jboss_enterprise_application_platform_continuous_delivery/18/html/developing_web_services_applications/developing_jax_rs_web_services

0
Simon Martinelli 25 jun. 2020 a las 10:13