문제

나는 쓰고 싶다 간단한 P2P HTTP를 기본 프로토콜로 사용하는 테스트 앱.
앱이 필요합니다 요청을 결정하십시오, 그것이 a로 작용 해야하는 경우 HTTP 서버, 또는 a HTTP 클라이언트.

내가 알고있는 고전적인 방법은 일부에 앱을 배포하는 것입니다. 기존의 HTTP 서버. 그러나 이것은 내 의도에 대한 잘못된 방법입니다. 다른 방법이어야합니다. 서버는 앱에 의해 시작됩니다 (그리고 결정된 경우에만).

HTTP 서버 부품을 실행하는 방법이 있습니까? 주문형(서버에서 앱 자체를 배포하지 않고)?

Glassfish 또는 Tomcat 라이브러리를 연결하여 "메인"방법을 호출하여 할 수 있습니까?

편집 : 작동합니다 !!!
나는 지금 시도했다 와 함께 Jax-Rs (저지) 성공적으로!
모두 감사합니다.

(나머지 클래스는 사소하고 제외)

패키지 my.p2p;

import com.sun.jersey.spi.container.servlet.*;
import org.mortbay.jetty.*;
import org.mortbay.jetty.servlet.*;

public class Main {
  public static void main(String[] args)
      throws Exception {

    ServletHolder holder = new ServletHolder(ServletContainer.class);

    holder.setInitParameter("com.sun.jersey.config.property.resourceConfigClass",
      "com.sun.jersey.api.core.PackagesResourceConfig");
    holder.setInitParameter("com.sun.jersey.config.property.packages", "my.p2p.rest");

    Server server = new Server(8000);

    Context context = new Context(server, "/", Context.SESSIONS);
    context.addServlet(holder, "/*");
    server.start();
  }
}
도움이 되었습니까?

해결책

당신은 사용할 수 있습니다 또는 다른 임베디 가능한 HTTP 서버. Jetty의 웹 사이트에서 :

Jetty는 HTTP 서버, HTTP 클라이언트 및 Javax.servlet 컨테이너를 제공하는 오픈 소스 프로젝트입니다. 이 100% Java 구성 요소는 완전한 기능, 표준 기반, 소형 발자국, 임베드 가능, 비동기 및 엔터프라이즈 확장 가능입니다. Jetty는 Apache 라이센스 2.0 및/또는 Eclipse Public License 1.0에 따라 이중 라이센스가 있습니다. Jetty는 해당 라이센스 중 하나의 조건에 따라 상업용 사용 및 배포에 무료입니다.

다른 팁

다른 대답 외에도 거기에도 있습니다 Nanohttpd. 하나의 수업만으로도 아주 작고 아마도 더 많은 것을 필요로하지 않거나 물건을 최소화하고 싶다면 옳은 일입니다.

살펴보십시오 restlet 프로젝트. 동일한 Java API (유명한 균일 한 인터페이스)를 사용하는 임베드 가능, 독립형 서버 및 클라이언트를 제공합니다.

Glassfish, Tomcat 또는 Servlet API는 나에게 약간의 과잉 인 것 같습니다. 내 0.02 $ :)

편집하다

고객

 Client client = new Client(Protocol.HTTP);  
 client.get("http://127.0.0.1").getEntity().write(System.out);  

섬기는 사람

Restlet sayHello = new Restlet() {  
    @Override  
    public void handle(Request request, Response response) {  
        response.setEntity("Hello World!", MediaType.TEXT_PLAIN);  
    }  
};  

new Server(Protocol.HTTP, 80, sayHello).start();  

Java 6에는 내장 된 웹 서버가 포함되어 있습니다. 당신은 그렇게 사용할 수 있습니다 :

    HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
    server.createContext("/", new HttpHandler() {
        @Override
        public void handle(HttpExchange xchange) throws IOException {
            String response = "This is the response";
            xchange.sendResponseHeaders(200, response.length());
            OutputStream os = xchange.getResponseBody();
            os.write(response.getBytes());
            os.close();
        }
    });
    server.setExecutor(null);
    server.start();

그런 다음 액세스합니다 http : // localhost : 8000 당신의 응답을보기 위해.

Javadoc에는 더 많은 예가 있습니다 httpserver 패키지

Java 6을 보장 할 수 없다면 살펴보십시오. 부두 6 쉽고 상당히 전등입니다. 즉, 전체 웹 앱이 필요하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top