NamingService를 사용하는 경우 실제로는 corbaloc URL 대신 corbaname url을 사용해야합니다. 다음은 네이밍 서비스가 포트 6969에있는 경우 작동합니다. "OurServiceHelper"가 6969이지만 NamingService가 다른 포트에 있으면 6969 대신 아래 URL에 이름 지정 서비스의 포트를 지정해야합니다. 서버 객체는 NamingService가 반환 한 ior에 내장되어 있기 때문에 지정하지 않아도됩니다.
"corbaname:10.1.1.200:6969#OurServiceHelper"
재 : 우선 된 IOR에 대한 메모와 개체를 제공 : 코멘트. 처리 된 객체가 프로세스 재시작시에도 지속되도록하려면 객체가 포함 된 POA에 PERSISTENT
평생 정책을 설정해야합니다. 또한 IOR은 서버의 IP와 포트를 포함하므로 재시작 할 때마다 일관성있게 유지되는 IOR을 생성하려면 고정 IP 및 포트 번호를 사용하고 영구적 수명 정책을 사용해야합니다.
이름 서비스를 사용하면이 물건에 대해 걱정할 필요가 없으므로보다 쉽게 작업을 수행 할 수 있습니다. 이름 서비스가 알려진 위치에 도달 할 수있는 한, 모든 서버 객체는 인스턴스화 될 때 이름 서비스에 등록 만 할 수 있으며 클라이언트는 어디에 있는지 알 필요없이 이름에 액세스 할 수 있습니다.
네임 서비스를 사용하지 않기로 결정했다면 코드를 약간 변경해야합니다. corbaloc
URL을 사용하는 경우 Interoperable Naming Service (INS)를 사용하고 있습니다. 참조 : http://java.sun.com/j2se/1.4.2/docs/guide/idl/INStutorial.html. INS를 사용하여 NamingContextExt
개체의 기능을 사용해야합니다. 특히 corabloc url을 해결하려면 NamingContextExt::resolve_str
함수를 호출하고 url을 전달해야합니다.
자바가 맞습니까? 그렇다면 다시 태그해야합니다.나는 프로세스의 스레드 덤프를 게시하는 것이 좋습니다. –
문제는 내 코발론 문자열과 관련이 있다고 생각합니다. _OurServiceHelper에서 _is_a() 메소드에서 차단 중입니다. 이 모든 것은 생성 된 코드입니다. OpenOrb 코드를 추적했지만 실제로 어떤 일이 일어나고 있는지 이해하지는 못합니다. 어쨌든 테스트와 마찬가지로 IOR을 서비스 측에서 생성하여 사용했습니다. 이 작동합니다. org.omg.CORBA.Object cobj = orb.string_to_object ("IOR : hugestring"); – Megasaur