2012-02-15 4 views
3

저는 CORBA로 작업하기 시작했습니다. 기본적으로 CORBA 클라이언트 역할을하는 Java 애플리케이션을 구현해야합니다.CORBA (orbd) 네트워킹 구성?

이 시점에서 나는 idlj.exe (필자가 제공 한 IDL을 컴파일하기 위해)와 orbd.exe (내 코드를 테스트하기 위해)를 포함하여 Sun JDK (JDK6) 도구를 주로 사용하고 있으며, 나는 idlj와 IDL을 사용하여 Java 클래스를 만들 수 있었고, 현재 작동중인 테스트 서버 응용 프로그램과 테스트 클라이언트 응용 프로그램을 작성했습니다. (작은 서버 응용 프로그램을 작성해야만 클라이언트 앱).

위에서 말한 것처럼 orbd.exe를 테스트 용 ORB로 사용하고 있습니다.

처음에는 orbd.exe, Java 서버 응용 프로그램 및 Java 클라이언트 응용 프로그램이 모두 동일한 시스템에서 실행되어 작동했습니다.

다른 시스템 (testxp)에서 orbd.exe 및 Java 서버 앱을 실행하고 별도의 시스템에 Java 클라이언트 애플리케이션을 실행하여 작동하는보다 분산 된 구성에서도 테스트를 수행했습니다.

제 질문은 다음과 같습니다. 내가 본 문서, 웹 페이지 등이 많이 있습니다. CORBA는 두 대의 ORB가 서로 통신하면서 하나의 컴퓨터에 서버 응용 프로그램과 ORB, 클라이언트 응용 프로그램과 다른/두 번째 시스템에서 실행중인 다른/두 번째 ORB와 같은 두 개의 ORB를 보여주는 다이어그램을 가지고 있습니다.

클라이언트 응용 프로그램 ==> ORB1 ----> ORB2 ==> 서버 응용 프로그램

반면, 지금까지 테스트 한 결과 orbd.exe를 ORB로 사용했지만 한 개의 ORB 만 사용했습니다.

그래서 위에서 설명한 것처럼 두 개의 ORB가있는 테스트 구성을 어떻게 구성 할 수 있습니까?

orbd.exe를 사용하여이를 수행 할 수 있습니까, 아니면 orbd.exe가 해당 구성 유형에서 작동하지 않습니까?

또한 orbd.exe를 사용하여 수행 할 수 있다면 어떻게해야합니까?

덕분에, 짐

답변

1

CORBA는 네트워크에서 응용 프로그램을 통신하는 아키텍처 및 인프라입니다. ORB는 IIOP에 대한 호출을 직렬화 (마샬링) 및 비 직렬화 (비 정렬 화)하는 구성 요소입니다. CORBA를 사용하면 C#으로 코드를 작성하고 (IIOP.NET 사용) Java로 서버와 통신 할 수 있습니다.

여러분 말이 맞습니다. ORB간에 통신이 이루어집니다.

| client app | < ==> ORB1 < - (IIOP) -> ORB2 < ==> | 서버 응용 프로그램 |

ORBD는 이름 지정 서버가있는 ORB입니다. 이름 서비스가 하나만있는 것이 이상적입니다. here 이름 서비스에 대해 읽을 수 있습니다.

마지막으로 ORB간에 통신을 시작하는 데는 여러 가지 f}이 있습니다. (a) POA의 서번트를 기동 해, 메소드 * poa.object_to_string (서번트) *를 호출 해, 파일 내의 캐릭터 라인을 기입 해, * poa.string_to_object (fileAsString) *를 사용해 클라이언트로 읽어들입니다. (b) 서버 호스트와 포트를 정의하고 corbaloc을 사용합니다. (c) 이름 서버에 등록 (최선의 선택).

테스트 과정에서 세 가지 프로세스를 사용해보십시오. 이름 서버, 클라이언트, 서버.

PS : 몇 가지 코드를 추가하기 위해 : : 다음 JDK 오브가

편집이 JacORB을 좋아

orb = org.omg.CORBA.ORB.init(args, props); 
org.omg.CORBA.Object obj = this.orb.resolve_initial_references("RootPOA"); 
this.rootPOA = POAHelper.narrow(obj); 
POAManager manager = this.rootPOA.the_POAManager(); 
manager.activate();