服务器如何将URI模式绑定到特定的Java类?

时间:2015-07-07 12:43:51

标签: java spring rest spring-mvc jax-rs

我在下面休息了。

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;

@Path("/users")
public class UserRestService { 
    @GET
    public Response getUser() { 
        return Response.status(200).entity("getUser is called").build(); 
    }
}

我不知道服务器如何使用此UserRestService.java文件映射此/ users uri模式。我们是否需要在Web配置中进行配置...?

我的问题: / users URI模式匹配时如何调用UserRestService.java?

提前致谢...

3 个答案:

答案 0 :(得分:1)

您需要扩展一个类javax.ws.rs.core.Application;(至少我这样做)才能注册 JaxRs资源URI 并在 web.xml中提供相应的信息喜欢: -

public class ExtendedClass extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> classes = new HashSet<Class<?>>();
        classes.add(UserRestService.class);
        return classes;
    }
}
web.xml中的

: -

    <servlet>
        <description>
        JAX-RS Tools Generated - Do not modify</description>
        <servlet-name>JAX-RS Servlet</servlet-name>
        <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>

        <init-param>

<param-name>javax.ws.rs.Application</param-name>

<param-value>package.name.ExtendedClass</param-value>

</init-param>
        <load-on-startup>1</load-on-startup>

    </servlet>
    <servlet-mapping>
        <servlet-name>JAX-RS Servlet</servlet-name>
        <url-pattern>
        /</url-pattern>
    </servlet-mapping>

答案 1 :(得分:1)

因为你的jax-ws servlet设置为响应应用程序中的特定url,如下所示

<servlet>
            <servlet-name>jaxws-servlet</servlet-name>
           <servlet-class>
                  com.sun.xml.ws.transport.http.servlet.WSSpringServlet
            </servlet-class>
</servlet>

<servlet-mapping>
            <servlet-name>jaxws-servlet</servlet-name>
            <url-pattern>/hello</url-pattern>
     </servlet-mapping>

答案 2 :(得分:1)

在基于REST的架构中,一切都是资源。通过基于HTTP标准方法(e.g., POST, GET, PUT or DELETE)的公共接口访问资源。在您的Web应用程序的org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher中提到的web.xml servlet类,其中包含所有JAX-RS根资源和提供程序。

使用/* url-pattern,所有资源都将传递给RESTeasy servlet。

<servlet>
 <servlet-name>resteasy-servlet</servlet-name>
  <servlet-class>
   org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
  </servlet-class>
</servlet>

<servlet-mapping>
 <servlet-name>resteasy-servlet</servlet-name>
 <url-pattern>/*</url-pattern>
</servlet-mapping>

您会想知道RESTeasy如何了解我使用@Path注释的课程,因此有另一种配置让RESTeasy了解您的资源,您必须在web.xml

 <context-param>
      <param-name>resteasy.scan</param-name>
      <param-value>true</param-value>
 </context-param>

因此,当请求来自/users时,org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher serrvlet会识别资源类或类方法将为其请求的URI路径,并在您的情况下调用它UserRestService。< / p>

希望有所帮助:)