2009-09-16 3 views
3

시작된 번들이있는 실행중인 춘분 osgi 프레임 워크가 있습니다. 이제는 '업데이트'를 통해 osgi 콘솔을 사용하여 번들을 업데이트합니다. (또는 제공된 메소드를 사용하십시오 : bundle.update (url));Equinox : 프레임 워크 재시작 후 번들 업데이트 손실

모든 것이 완벽하게 작동하지만 ... osgi 프레임 워크를 completly 재시작하면 이전에 업데이트 된 번들이 다시 원래 상태가됩니다 (업데이트 전과 같이).

Eclipse의 update.configurator를 사용하여 plugins 디렉토리의 모든 번들을 검색하고 설치했지만 번들이 업데이트되었는지는 인식한다고 생각했습니다.

누군가 내게 실종 된 힌트를 떨어 뜨릴 수 있습니까?

덕분에, 마이클 Mangeng

답변

1

어떻게 춘분을 시작? -clean으로 시작하고 있습니까? (업데이트가 없어 질 것입니까?)

'udpate'는 디스크의 원본 JAR 비트를 변경하지 않고 메모리 내 실행 복사본을 업데이트합니다. 춘분을 시작하고 이전 번들 (새 것이 아닌)을 전달하는 경우 이전 상태로 되돌아 올 수 있습니다.

P2는 일단 번들의 비트를 잘라낸 후에는 동일하게 유지됩니다. 즉, P2는 처음부터 bundle.update()를 효과적으로 중단하는 것으로 가정합니다. 그러나 디스크의 비트를 관리해야 할 수 있으므로 누군가가 clean을 수행하더라도 올바른 데이터를 얻을 수 있습니다.

+1

안녕하세요! 아니요 - 아니요 .-clean으로 시작하지 않습니다. 현재 상위 버전으로 바꿔서 사용하지 않기 때문에 현재 춘분 3.2를 사용하고 있습니다. 어쩌면 문제는 내가 bundle.update (...) 번들 일련의 번들을 위해 이루어집니다 구성 영역에 번들의 업로드 된 버전을 저장하는 줄 알았는데 ... 규칙을 모르는 경우 항아리 거기에 저장됩니다). 이 경우라면 입니다. 파일을 먼저 파일 시스템에 저장 한 다음 이전 버전을 삭제하도록 코드를 변경하겠습니다. 이것이 맞는 방법입니다. 이 경우에는 bundle.update (InputStream in)를 사용할 수 없습니다. 무엇을 생각하나요? –

+1

OSGi 스펙은 다시 시작한 후에도 지속적으로 발생해야하는 작업에 대해서는 아무 것도 말하지 않습니다. 다시 가져와야합니다. 업데이트 자체가 영구적 인 번들을 업데이트하지 않을 것이라고 생각합니다. 특히 파일 기반 번들의 경우에는 그렇습니다. 원격 URL에서 번들을 설치하고 업데이트를 수행하면 어떻게 될지 잘 모르겠습니다. 어쨌든 스펙의이 영역은 다음 경우에 정의되지 않습니다 .-) 원할 경우 여전히 bundle.update (InputStream)를 사용할 수 있습니다. 그러나 적절한 위치에 비트를 업데이트 한 다음 (이후에) update()를 호출해야합니다. – AlBlue

+0

내 impl을 변경하여 원본 파일 기반 번들을 대체합니다. 도움 주셔서 감사합니다. –