我可以像这样运行一个简单的网络服务吗:
@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
?
是的,可以。看一下 Jersey 的“helloworld-pure-jax-rs”示例:https://github.com/jersey/jersey/tree/master/examples/helloworld-pure-jax-rs
不,您不能使用 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。
是的,你可以。 从 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"); 端点.发布(上下文);