java - 其余 Web 服务的 URL 是什么?

标签 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 中预定义的

在第一种方法中没有提供这一点 - 那么我们如何不调用此服务呢?

谢谢

最佳答案

如果您正在谈论如何访问您创建的端点,那么您将需要将您的java web项目部署到某个应用程序服务器(例如Tomcat,WAS等),并且您可以通过任何类型访问它客户端(例如网络浏览器)。

您可以通过将项目导出为 war 并将其部署到应用程序服务器,或者通过在 eclipse 中运行它来将其部署到服务器,假设您有正确的环境设置 (wtp)。

关于java - 其余 Web 服务的 URL 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25168078/

相关文章:

java - 如何防止 servlet 缓冲响应内容

java - SOAP 使用适配器休息服务

java - GET 响应中包含 URL

Java模式不理解

JAVA无法通过强制转换找到子类方法

Android、KSoap2 和 .NET Web 服务 w/parameters = NULL 结果

xml - XQuery - 返回整个文档,而不仅仅是选择/修改的部分

javascript - 保护我将在客户端使用的 REST 服务不被他人使用

java - 通知运行在不同对象中的线程

c# - 认证失败,因为远程方在从 webservice 获得响应时关闭了传输流异常