2009-12-19 6 views
7

클래스를 정의한 다음 해당 클래스 유형의 개체를 설치합니다. 다른 컴퓨터에서 실행중인 다른 Java 응용 프로그램에이 객체를 투명하게 보내려고합니다. 이것을 달성하기위한 최고의 기술은 무엇입니까?인터넷을 통해 개체 보내기

+2

인공위성, 인터넷 또는 AM/FM 라디오를 의미합니까? 그렇지 않다면 수업을 볼 수 있습니까? 우리에게 코드 줘! \ o/뭐든지! 만큼 아직 움직이고, 조금 .. – 0scar

+0

BTW, 당신은 그것을 수행하는 방법을 샘플 코드가 아닌 질문을 성취하는 최고의 기술을 요청했습니다. 이것이 기술 사용에 대한 3 가지 대답을 얻은 이유입니다. 샘플 코드를 원한다면 샘플 코드를 요청하면 다른 기술을 사용하거나 동일한 기술을 사용하여 수행하는 방법에 대해 여러 사람들이 제공 한 샘플 코드가 제공되지만 선택해야 할 것이 많습니다. –

답변

7

Java API를 사용하여 객체 스트림을 만들고 모든 직렬화 가능 객체를 보낼 수 있습니다.

보낸 사람의 측면에서 :

CustomObject objectToSend=new CustomObject(); 
Socket s = new Socket("yourhostname", 1234); 
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream()); 
out.writeObject(objectToSend); 
out.flush(); 

과 수신 측에

:

ServerSocket server = new ServerSocket(1234); 
Socket s = server.accept(); 
ObjectInputStream in = new ObjectInputStream(s.getInputStream()); 
CustomObject objectReceived = (CustomObject) in.readObject(); 
6

이렇게하는 방법에는 여러 가지가 있습니다. 살펴볼 몇 가지 사항을 소개하고 응용 프로그램에 가장 적합한 도구를 선택할 수 있습니다.

  • J2EE
  • RMI

거의 모든 통신 프레임 워크를 사용하면 하나의 방법으로 네트워크를 통해 물체를 넣거나 할 수 있도록 소켓

  • 웹 서비스를 통해 비트를 밀어
  • 객체 직렬화 또는 다른. 당신은 그것들을 재검토하고 당신의 어플리케이션에 맞는 것을 볼 필요가 있습니다. 빠른 Google은 더 많은 방법을 찾아야합니다.

  • 2

    A (사실상의) 표준하지만 당신은 이러한 네트워크를 통해 암호화되지 않은 갈 것을 명심해야합니다 이를 구현하려면 웹 서비스을 웹 서비스 (예 : JAX-WS)를 Java 6 번들로 사용하는 것이 좋습니다. Java 첫 번째 샘플 (예 : 주석 사용)은 this tutorial을 참조하십시오. 이것은 꽤 간단하고 쉽습니다.

    Socket, RMI, EJB보다 Serialization과 같은 다른 접근 방법이 있지만 인터넷을 통해 작업 할 때 웹 서비스는 기존 표준 (SOAP, HTTP)에 의존하고 방화벽을 쉽게 다룰 수있는 자연스러운 선택입니다 (다른 모든 솔루션의 경우 실제 문제 일 수 있음).

    1

    Java는 ObjectOutputStream (및 ObjectInputStream)을 사용하여 (2 진) 오브젝트 직렬화를 제공합니다. 스트림에는 writeObject()를, 반대쪽에는 readObject()를 사용할 수 있습니다. 이 작업을 위해 필요한 것은 Serializable 인터페이스를 구현하는 것입니다.

    수동으로 수행하는 것이 아니라 원격 메소드 호출을 사용하여 한 레벨 위로 가져 가야합니다. RMI를 사용하면 다른 JVM에있는 객체에 대한 메소드를 호출 할 수 있으며 모든 직렬화 및 네트워킹이 실제 수행됩니다.

    그리고 바이너리 형식을 사용할 수없는 경우 XML 빈 직렬화도 있습니다. 이 XML 형식은 매우 일반적이며 (자세한 : verbose 및 못생긴), 대체 XML 직렬화를 만드는 인기있는 라이브러리 (예 : XStream)가 있습니다.

    관련 문제