java - JBoss REST URL 不起作用

标签 java rest jboss

我正在使用以下 web.xml 将 WAR 文件 (vimbaserver-1.0.war) 部署到我的 JBoss Web 服务器:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:web="http://java.sun.com/xml/ns/javaee" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>vimbaserver</display-name>
  <servlet>
    <servlet-name>vimbaserver</servlet-name>
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
    <init-param>
      <param-name>javax.ws.rs.Application</param-name>
      <param-value>com.vimba.main.ServerStart</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>vimbaserver</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>
</web-app>

WAR 包含两个我想测试的 REST 函数:

@GET
@Path("/getWord/{word}")
@Produces(MediaType.TEXT_PLAIN)
public String getWord(@PathParam("word") String word) {
    return "hello world " + " " + word;
}

@GET
@Path("/register/{userid}/{email}/{password}/{displayname}/{genderpref}/{hot}/{not}")
@Produces(MediaType.TEXT_PLAIN)
public String register(@PathParam("userid") String userid, @PathParam("email") String email, @PathParam("password") String password, @PathParam("displayname") String displayname, @PathParam("genderpref") GenderPreference gender, @PathParam("hot") int hot, @PathParam("not") int not) {
    if (userid == null || email == null || password == null
            || displayname == null || gender == null) {
        throw new IllegalArgumentException(
                "Required fields are null when registering");
    }
    try{
        RegistrationStatus status = factory.register(userid, email, password,displayname, gender.getValue(), hot, not);
        if(status == RegistrationStatus.SUCCESSFUL){
            MailSender.generateSignUpEmail(userid, email, password);
        }
        return status.getValue();
    } catch(MajorMinorException e){
        logger.error("An error occurred whilst trying to register user: ",e);
    }
    return RegistrationStatus.FAILED.getValue();
}

根据上面的内容,我们预计以下 REST URL 可以工作: http://xx.xx.xx.xx:8080/vimbaserver-1.0/functions/getWord/test 。然而,事实似乎并非如此。

奇怪的是,我们的服务器上部署了另一个应用程序,它公开了许多似乎工作正常的 REST 函数。

最佳答案

web.xml 中所述你的URL模式是<url-pattern>/rest/*</url-pattern>所以URL应该是,

http://xx.xx.xx.xx:8080/vimbaserver-1.0/rest/functions/getWord/test
                                       ^^^^^^^Add rest in your url

确保您的服务类别包含 @Path("/functions")在开始时并正确注释。听起来您错过了一些注释。例如@Service@Component请检查。

关于java - JBoss REST URL 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25179159/

相关文章:

java - '使用 for 循环比较 ArrayList 的每个元素是否等于用户响应

javascript - Node.js API - 来自多个客户端的重复数据请求

java - 无法启动jBoss AS 7.1

java - 分发 Java Web 应用程序

java - EAR 中的 WAR - 忽略 jboss-deployment-structure.xml

java - -XX :+HeapDumpOnOutOfMemoryError Multiple heap dump creation

java - 比较 Ascii 代码

java - Thrift Java TNonBlockingServer 随机挂起

javascript - 保护我的 Node.js 应用程序的 REST API?

c# - 为什么我需要 WCF 来构建 RESTful 服务?