2011-09-12 2 views
0

Maven + BND로 만든 번들 세트가 있습니다. 번들 중 하나는 내 Vaadin "응용 프로그램"을 포함하고, 다른 응용 프로그램은 일부 유틸리티와 추가 편집자를 포함합니다.Vaadin 리소스가 OSGI에로드되지 않았습니다

Tomat 서버에서이 앱을 실행할 수 있습니다. 모든 것이 정상입니다. 그런 다음 OSGI (Apache Felix)에서 실행 해 보았습니다. 많은 문제가 해결 된 후 OSGI 런타임을 실행하고 모든 번들을로드하고 올바르게 활성화했습니다. "localhost : 8080/bat"로 첫 번째 페이지에 액세스 할 수도 있습니다. "404 not found"가 더 이상 표시되지 않습니다.

문제는 다음과 같습니다. 시작 페이지는 내 응용 프로그램에서 서식이 지정되지 않은 텍스트을 개만 표시합니다.

앱이 Vaadin 리소스 (CSS, widgetset 등)를로드 할 수 없습니다. 디버그 프레임은 말한다 : angel이라는 자원을로드 할 수없는 것처럼

Starting Vaadin client side engine. Widgetset: com.vaadin.terminal.gwt.DefaultWidgetSet 
Widget set is built on version: 6.6.6 
Warning: widgetset version 6.6.6 does not seem to match theme version 
Starting application bat-97301 
Vaadin application servlet version: 6.6.6 
Application version: 0.0.1 
inserting load indicator 
Making UIDL Request with params: init 
Server visit took 9ms 
... 
Assuming CSS loading is not complete, postponing render phase. (.v-loading-indicator height == 0) 
Assuming CSS loading is not complete, postponing render phase. (.v-loading-indicator height == 0) 
.... 
CSS files may have not loaded properly. 

보인다.

질문 : OSGI 번들로 포장 된 Vaadin 응용 프로그램에 적합한 구조는 무엇입니까?

여기 (메이븐 + BND로 만든) 내 OSGI 번들 구조입니다 : 나는 최근에이 연습을했다

├───com 
│ └───my 
│  ├───demomodules 
│  ├───preferences 
│  ├───widgetset 
│  └───workspaces 
├───META-INF 
├───VAADIN 
│ ├───icons 
│ ├───themes 
│ │ ├───mytheme 
│ │ └───reindeer 
│ │  ├───a-sprite-definitions 
│ └───widgetsets 
│  ├───com.my.widgetset.Vaadin1Widgetset 
│  │ └───ie6pngfix 
│  └───WEB-INF 
│   └───deploy 
│    └───com.my.widgetset.Vaadin1Widgetset 
│     ├───rpcPolicyManifest 
│     └───symbolMaps 
└───WEB-INF 

답변

0

(I 중요하지 어떤 angel이라는 순록 테마 폴더를 생략). Vaadin과 OSGi에 대한 인터넷 검색은 통합하는 방법과 어떤 수준 (예 : 구성 요소 또는 응용 프로그램. 그러나 "실현 포인트"의 핵심은 VAADIN 리소스가 클라이언트에서 액세스 할 수 있도록 정렬해야한다는 것입니다. 즉, "서블릿"의 리소스로 사용할 수 있습니다. 나는 번들 구조가 그렇게 도움이 될 것이라고 생각하지 않는다. 당신은 Http 서비스를 다루어야하고, 그 서비스를 제공하는 방법에 대한 지침을 제공해야한다.

nea bartlett의 예시를 https://github.com/njbartlett/VaadinOSGi, 구체적으로 vaadinbridge 프로젝트에서 살펴보십시오. 그것은 그 문제를 이해하는데 도움이되었습니다.

또 다른 접근법은 처녀 자리와 같은 WAR를 이해하는 OSGi 대륙에 번들을 배포하는 것입니다. 그러나 이것은 단지 추측 일뿐입니다.

+0

내가 발견 [해킹 스타일] 임시 방편은 다음과 같습니다 ** : 같은 angel이라는 자원 번들을 선언 '조각 - 호스트 : com.vaadin, 번들 버전 = "6.6.6"'** 그러나 그것은 분명히 좋은 해결책이 아닙니다. – Alex