2011-01-06 4 views
2

짧은 소개. 일부 독립 클라이언트는 일부 속성 및 동작을 사용하여 일부 개체를 "발명"하는 프로덕션 시스템이 있습니다. 이러한 개체에 값을 할당하고 실행하고 실행할 때 상태를 읽을 수 있습니다. 모든 것이 웹 인터페이스를 통해 이루어집니다. 클라이언트가 로그인하고, 값을 할당하고, 객체를 주입하고, 컨테이너를 시작하고, 자신의 객체가 변경되는 것을 봅니다.동적으로 정의 된 웹 메소드 인수

모든 것은 클라이언트의 JAXB 호환 스키마를 기반으로합니다. 스키마는 Java 클래스로 컴파일되고 클라이언트의 jar로 패키징됩니다. (많은 도움을 준 stackoverflow 회원 덕분에 날아 다니며).

그리고 여기에 문제가 있습니다. 그들은 웹 서비스 (SOAP)가 현재 웹 인터페이스를 통해 모든 것을하고 싶어합니다. 그리고, 물론, WSDL 유형과 JAXB 스키마에 따라 그들이 동적으로 실제로 매일 :( 에 변경 및 배포, 그들은 웹을 통해 할 수있는 모든 작업은 다음과 같습니다

  1. 시작/중지 응용 프로그램 컨테이너 (공통 작업, 문제가되지 않습니다)
  2. 컨테이너

"3"에서 특정 유형의 객체를 검색 용기에

  • 를 주입 클라이언트 정의 객체는 "2"확인되면 문제가되지 않습니다. 그러나 "2"운전 나 한테 화가 나기 전에 내가 조언을 구해야 해. ERMS WebService에 내 질문은 : 내가 생각하고

    다음
    @WebMethod 
    public void inject(UserDefinedObject obj) { 
        getAppContainer().inject(obj); // that's all I have to implement 
    } 
    

    하는 방법 :

      어떻게 고객의 JAXB 스키마에 의해 정의되는 인수의 형태를 가정, 방법을 다음과 같이 WS 엔드 포인트를 게시 할
    1. 클라이언트의 스키마에 따라 xml 요청/응답을 수정하려면 인수로 Object : public void inject(Object obj); 및 코드 ServletFilter을 사용하십시오. 하지만 WS 서블릿이 메서드 시그니처를 검사하지 않고 예외를 throw하는지에 대해서는 확신하지 못합니다. 또 다른 질문은 JAXB 언 마샬링을 수행하기 위해 해당 메소드 내에서 요청의 XML에 액세스 할 수 있는지 여부입니다.

    2. 이미 클라이언트 jar를 컴파일 중이므로 웹 서비스 끝점을 컴파일하고 OSGI 번들로 동적으로 배포 할 수 있습니다. 나는 OSGI를 처음 접했고 너무 많은 질문을 던졌다 : 내 귀에 대해서는 무엇이든지, OSGI, EJB와 통신하는 방법 등을 모두 할 필요가 있는가?

    3. 더 많은 googling ,하지만 나는 두려워 브린 & 나를 충전 시작됩니다.

    다른 아이디어가 있습니까?

  • 답변

    0

    마지막으로 correct way to turn EAR module into OSGi bundle의 해에서 설명한 OSGi 옵션을 사용하기로 결정했습니다.

    Bundle clientWsBundle = bundleContext.installBundle(bundleId, bundleWarInputStream); 
        registerNewBundle(clientWsBundle); 
    

    확실하지 않음이 솔루션에 적용 할 수있다 : 내 관리자 전쟁이 귀에서 철수 한 후에는 OSGi 번들로 바뀌 때문에 BundleContext에 대한 액세스를 얻고, 그것의 동적 즉시/배포 취소 고객의 개인 webservics를 배포 할 수 있습니다 OSGi 기반이 아닌 다른 응용 프로그램 서버. OSGI 구성이 EAR의 나머지 부분과 원활하게 작동하도록하기 위해 추가 구성이 필요하다고 생각합니다.

    관련 문제