Jboss 7.0 我正在尝试将简单的 REST 服务上传到 JBoss AS 7.0 Jersey 在 JBOSS 中不起作用

Jboss 7.0I'm trying to upload simple REST service onto JBoss AS 7.0 Jersey is not working in JBOSS

我正在尝试将简单的 REST 服务 maven 项目上传到 JBoss AS 7.0,因为 resteasy jar 提供了安全问题,我正在尝试用 jersey 替换 resteasy。 1.My 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.My jboss-部署-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. 我的 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. 服务器端点:::
public class RestApiImpl {
    @GET
    @Path("/merchant")
    @Produces(MediaType.TEXT_PLAIN)
    public String getMerchantDetails() {
      System.out.println("request received");
        return "success";
    }
}

当我 运行 jboss 服务器时, war 得到部署没有任何错误但是当我进行 restcall http://localhost:8080/addjersey/merchant/ ,来自服务器的响应是 404 并且没有异常或日志正在滚动。 我是 JBOSS 的新手,我无法弄清楚我到底缺少什么或需要添加任何其他配置?。 我遵循了这个 但它没有帮助。

我假设您没有应用程序 class:

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

或 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>

请阅读文档。

我个人喜欢第一种方法。

请阅读文档以了解更多信息

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

在我对以下文件进行更改后,它对我有用 1.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>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.Server 终点::

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

jboss-部署-structure.xml 文件不需要配置。