2013-06-25 3 views
0

Servicemix에서 번들을 실행하고 있습니다. 나는 회사의 저장소에 가서 로컬 시스템에 해당 JAR을 다운로드했다. 나는 그 JAR 파일의 압축을 풀었고이 JAR 파일에는 META-INF 폴더가 하나 밖에 없다는 것을 알았습니다. 이 폴더 안에는 Manifest.mf 파일과 Spring 구성 파일 및 Camel 컨텍스트 파일과 같은 리소스가 있습니다. 거기에 내 첫 번째 질문이 있어요 :이 JAR 즉 Java 클래스 및 모든 원본 파일을 어디에 있습니다. 내가 본 유일한 사실은 manifest 파일, pom.xml, 다른 pom 특성 파일 및 봄과 낙타를위한 다른 구성 파일의 커플이었습니다.servicemix에서 번들을 시작할 수 없습니다.

이것은 다음 단계로 이어졌습니다. 내 작업 공간에도이 프로젝트의 로컬 복사본이 있습니다. 이 프로젝트를 로컬로 빌드하고 프로젝트의 대상 디렉토리에서 JAR을 찾았습니다.

다음 단계는 어리석은 것처럼 보일 수 있지만 어쨌든 나는 거의 실험을하지 않았습니다. 대상에서 발견 된이 JAR을 추출하여 내용을보기 위해 추출했습니다. 필자는 maven-bundle-plugin을 사용했기 때문에 번들이라고 믿었습니다. JAR 또는 OSGI 번들 인 JAR을 보면 알 수있는 방법이 없습니다. ok 그래서 JAR을 추출하고 컴파일 된 java 클래스를 가진 시간을 추측합니다.

이것은 끝이 아니므로, 나는 바보 같은 짓을 다시했습니다. 이 JAR에서 컴파일 된 클래스를 제거하고 회사의 중앙 저장소에서 복사 한 것과 정확히 동일하게 만들었습니다. 이제는 JDK의 JAR 작성 유틸리티를 사용하여 JAR을 작성했습니다.

이제 회사의 중앙 저장소에서 다운로드 한 두 개의 JARS : 하나가 있습니다. 내가 직접 만든 또 다른 하나. 그것은 다른 하나와 정확히 같은 내용을 가지고 있습니다. 나는이 JAR을 생성하는 동안 동일한 manifest.mf를 사용하기까지했다. (내가 Manifest가 oSGI 번들의 백본임을 알기 때문에).

안전하게이 번들을 내 서버의 홈 디렉토리에 복사했습니다. 마지막으로 Servicemix에이 번들/JAR을 설치했습니다 : 설치 파일 : path_to_JAR/JAR_FILE_NAME.

성공적으로 설치되었습니다. 하지만이 번들을 시작할 때. 시작하지 못했습니다. display-exception을 사용하여 예외를 보았습니다. 빈을로드 할 수 없었고 응용 프로그램 컨텍스트를 초기화하고 더 구체적인 예외 인 "ClassNotFound"예외를 초기화 할 수 없었습니다. 내 응용 프로그램 컨텍스트에서 정의 된 클래스를 찾을 수 없다는 것을 이해합니다. 그러나 어느 날?

정확히 동일한 단계를 수행하고 여러 번 확인했습니다. 내 것이 시작될 수 없다면, 왜 이전의 것이 실행되고 있는지.

OSGI 환경에서 근무한 다른 사람들에게는 어리석은 소리 일지 모르지만, 이제는 특히 ServiceMix를 다시 고려하기 시작했습니다.

의견을 보내 주셔서 감사합니다.

답변

0

이것은 OSGi에 관한 것이 아니라 응용 프로그램에 관한 것입니다. 프로젝트를 알지 못하기 때문에 몇 가지 가정을 할 수 있습니다. 먼저 회사 저장소에서 가져온 항아리는 "오래된"버전 일 가능성이 높으며 현지 출처와 동일하지 않습니다. Servicemix를 사용하면 번들 또는 스프링 xml을 번들에 포함시킬 수 있으므로 Camel-Blueprint/Spring Extender가 선택할 수있는 유효한 리소스입니다. 이러한 XML은 해석되며 표준 Camel Components 만 사용하는 경우 번들 내에 단일 Class를 가질 이유가 없습니다. 이제 새롭게 생성 된 Bundle으로 다시 돌아 가면, 표준 Camel 클래스뿐만 아니라 독자적으로 만든 프로세스가 필요한 이제는 클래스가 Bundle에 남아 있어야하는 camel-xml에 새로운 "코드"가 생겼습니다! 새로 만든 Bundle을 모든 클래스와 함께 배포하는 것이 가장 좋습니다. 낙타 xml 파일에서 무엇이 변경되었는지 확인해야합니다.

+0

감사합니다. 일부 포인트가 실제로 나에게 의미가 있습니다. – Ashish

+0

나는 낙타 xml 파일, 심지어 클래스를 검사했다. 버전을 SNAPSHOT으로 변경한다는 것 이외에는 단일 변경 사항이 없습니다. 나는 servicemix에 갔다가 기존의 것을 제거하고 실행했다. servicemix에 추가 기능이나 제약 조건을 설치할 필요가 없다는 것을 나타내는 pom.xml에는 변화가 없습니다. – Ashish

+0

이전 버전이 "동일"한 것이 확실합니까? –

관련 문제