我可以在 com.sun.net.httpserver.HttpServer 上运行 JAX-RS Web 服务吗?

问题描述 投票:0回答:3

我可以像这样运行一个简单的网络服务吗:

@Path("/rs/hello")
public class HelloWorldProgram {

    //path is default
    @GET
    @Produces(MediaType.TEXT_HTML)
    public String sayHello() {
        return "Hello, World!";
    }

    @GET
    @Produces(MediaType.TEXT_XML)
    @Path("/xml")
    public String sayXMLHello() {
        return "<?xml version=\"1.0\"?>" + "<hello> Hello" + "</hello>";
    }
}

与 JDK 简单 Web 服务器捆绑在一起

com.sun.net.httpserver.HttpServer
?

java jax-rs
3个回答
3
投票

是的,可以。看一下 Jersey 的“helloworld-pure-jax-rs”示例:https://github.com/jersey/jersey/tree/master/examples/helloworld-pure-jax-rs


0
投票

不,您不能使用 com.sun.net.httpserver.HttpServer。您需要一个与 Servlet API 兼容的服务器。相反,您可以使用例如 org.glassfish.grizzly.http.server.HttpServer:

import java.net.URI;

import javax.ws.rs.core.UriBuilder;

import org.glassfish.grizzly.http.server.HttpServer;
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
import org.glassfish.jersey.server.ResourceConfig;

public class Server {

    public static void main(String[] args) throws InterruptedException {
        URI uri = UriBuilder.fromUri("http://localhost/").port(8888).build();
        ResourceConfig rc = new ResourceConfig(HelloWorldProgram.class);
        HttpServer server = GrizzlyHttpServerFactory.createHttpServer(uri, rc);
        Thread.currentThread().join(); // keep running
    }
}

您将需要依赖于 Jersey Container Grizzly2 Servlet


0
投票

是的,你可以。 从 wsdl 生成存根: wsimport -s src/main/java/ -target 2.1 -Xnocompile -p de.yourpackage.YourWebService yourwebservice.wsdl

实现 YourWebService。 在您的服务器中创建一个 Endpoint 端点 = javax.xml.ws.Endpoint.create(new YourWebService()) 该端点可以通过以下方式发布 HttpContext context = httpServer.createContext("yourPublishingPoint"); 端点.发布(上下文);

© www.soinside.com 2019 - 2024. All rights reserved.