2014-12-11 12 views
0

Eclipse에 webapp을 작성하고 있으며 클래스 중 하나에서 serviceloader를 사용하려고합니다. 질문은 META-INF/services를 넣는 곳입니다. 여기에서 (https://stackoverflow.com/a/3421191/2742995) 찾았습니다 :Service Loader 구성 파일이 제대로 분해되지 않습니다.

그러나 이상적인 방법은 플러그인의 jar 파일에 넣는 것입니다.

myplugin.jar!/META-INF/services/com.example.plugin.MyPlugin 

: 당신이 플러그인은 WEB-INF/lib 디렉토리/myplugin.jar 번들로 한 및 플러그인 클래스는 다음 com.example.plugin.MyPlugin 경우 예 항아리는 구조를 가져야한다 그래서 serviceloader 물건을 포함하는 모듈, 소스에 있습니다. SRC/메인/자바/

  1. vcs.validation를 포함 * (소스 코드를 포함)
  2. 폴더 : META-INF는/서비스 /vcs.validatio n.javatests.JavaTest 함유 (vcs.validation.javatests.Test2를 판독) (vcs.validation.javatests.Test1를 판독)

    • Test1을하고
    • 을 Test2를

(인터페이스 vcs.validation.javatests.JavaTest는 두 개의 구현 클래스 인 Test1과 Test2를 가지고있다.)

그러나 전체 webapp을 war로 패키징하고 tomcat에 deploy하면 web-app/WEB-INF/classes/폴더가 수행한다. 아니 META-INF/services /를 포함하지 않습니다. 여기서 내가 뭘 잘못하고 있니?

답변

0

구조가 있어야한다 :

Project 
| Module 
| | src 
| | main 
|  | java 
|  | [ source code]  
|  | resources 
|  | META-INF 
|   | services 
|   | [service files] 

대신 : 서비스 파일이 더 이상 웹 애플리케이션/WEB-INF가/클래스에 폭발하지 않습니다 이런 식으로

Project 
| Module 
| | src 
| | main 
|  | java 
|  | [source code] 
|  | META-INF 
|   | services 
|   | [service files] 

/META-INF/서비스하지만, 단지에 포장되어있는 단지에 살고 :

myplugin.jar!/META-INF/services/com.example.plugin.MyPlugin