休息Web服务的URL是什么?

时间:2014-08-06 18:57:07

标签: java web-services rest

我正在研究在jboss上部署jax-rs Web服务的不同方法,并找到了两种可能的方法(这些可以在下面看到)

接近1

@ApplicationPath("rest") 
public class ServerStart extends Application{

    private Set<Object> singletons = new HashSet<Object>();

    public ServerStart() {
        singletons.add(new ExposedFunctions());
    }

    @Override
    public Set<Object> getSingletons() {
        return singletons;
    }
}

XML

<?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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Swiped Service</display-name>
  <servlet>
    <servlet-name>swipedserver</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.swiped.main.ServerStart</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>swipedserver</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>
</web-app>

接受请求的类

@Path("/functions")
public class ExposedFunctions {

    private static Logger logger = Logger.getLogger(ExposedFunctions.class);
    private DBFactoryController controller = new DBFactoryController();

    public ExposedFunctions(){
        if(controller!= null){
            controller.buildCache();
        }
    }

    @GET
    @Path("/register/{username}/{password}/{email}/{firstname}/{lastname}")
    @Produces(MediaType.TEXT_PLAIN)
    public String register(@PathParam("username") String username, @PathParam("password") String password, @PathParam("email") String email, @PathParam("firstname") String firstname, @PathParam("lastname") String lastname) {
        System.out.println(true);
        if(StringUtilities.stringEmptyOrNull(username, password, email, firstname, lastname)){
            logger.error("String was null or empty when registering");
        }

        RegistrationStatus status = controller.register(username, password, email, firstname, lastname);
        return status.getValue();
    }
}

接近2

public static void main(String[] args){
    try{
        HttpServer server = HttpServerFactory.create(BASE_URI);
        server.start();
        System.out.println("Press Enter to stop the server. ");
        System.in.read();
        server.stop(0);
    }catch(Exception e){
        e.printStackTrace();
    }
}

现在在方法二中,你在如何调用服务时非常明确,URL是在变量BASE_URI中预定义的

在第一种方法中没有提供 - 所以我们怎么没有如何调用这项服务?

由于

1 个答案:

答案 0 :(得分:1)

如果您正在讨论如何访问您已创建的端点,那么您需要将您的Java Web项目部署到某个应用服务器(例如Tomcat,WAS等),您可以通过任何类型的客户端(例如Web浏览器)。

假设您拥有正确的环境设置(wtp),您可以将项目作为战争导出,将战争部署到应用服务器,或者在eclipse中运行,将其部署到服务器。