簡體   English   中英

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

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

I'm trying to upload simple REST service maven project onto JBoss AS 7.0 since resteasy jar providing security issue, i am trying to replace resteasy with jersey. 1.我的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.我的jboss-deployment-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 服務器時,戰爭部署沒有任何錯誤但是當我進行 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.服務器端點::

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM