2016-07-25 3 views
0

WEB 모듈과 EJB 모듈이있는 EAR 프로젝트가 있습니다. 이 application.xml을에서이다 :EJB에서 WEB 모듈의 컨텍스트 루트 가져 오기

<module> 
    <ejb>PersonEJB.jar</ejb> 
</module> 
<module> 
    <web> 
     <web-uri>PersonWeb.war</web-uri> 
     <context-root>PersonWeb</context-root> 
    </web> 
</module> 

나는 웹 프로젝트에 EJB에서 파일을 쓰고 싶어 나는 이것에 대한 웹 프로젝트의 경로를 찾을 필요가있다. 먼저 EJB의 application.xml에서 context-root를 읽어야하지만이 작업을 수행하는 방법을 모르겠습니다. 이것이 내 필요에 대한 해결책이 아니라면 다른 것을 말해주십시오.

+0

일반적으로 웹 레이어에서 EJB를 호출하므로 웹 레이어에서 데이터를 가져 와서 매개 변수로 EJB 메소드에 전달할 수 있습니다. 두 모듈을 분리 된 모듈로 모델링 했으므로 EJB 모듈에 웹 모듈이 있다는 것을 직접 알리고 싶지는 않을 것입니다. – Gimby

+0

EJB를 REST 서비스로 사용하므로 이전에 데이터를 가져올 수 없습니다. 당신은 별거에 대해 옳습니다. 그렇다면 업로드 된 파일은 어디에서 작성해야합니까? –

답변

2

기본적으로 어떤 방식 으로든 하드 코딩하지 않고 EJB에 대한 경로를 지정하는 방법을 원합니다. 결국 응용 프로그램이 배포되는 위치에 따라 경로가 변경됩니다.

즉,이를 구성 할 수 있다는 것을 의미하며,이를 실현하기위한 몇 가지 옵션이 있습니다. 다음은 소수입니다.


이미 데이터베이스가있는 경우, 당신은 간단한 키 - 값 쌍을 보유하고 거기에 테이블을 추가하고 서버 별 구성 데이터 그런 식으로 지정할 수있는 데이터베이스

를 사용합니다. 응용 프로그램에서 응용 프로그램 시작시이 데이터를 한 번로드하면됩니다 (예 : @Singleton EJB).

이 방법이 효과적이지만 데이터베이스에 구성 데이터가있는 것은 응용 프로그램에 따라 약간의 부담이 있습니다. 데이터베이스는 하나 이상의 응용 프로그램에만 사용되는 경향이 있습니다. 당신이 이미 그런 테이블을 가지고 있지 않다면 나는이 경로를 추천하지 않습니다.


는 속성이 또 다른 방법은 특성 파일에 저장하는 것입니다

파일 사용합니다. 대부분의 응용 프로그램 서버에는 인스턴스 별 구성 파일을 배치하고 응용 프로그램에로드 할 수있는 특정 위치가 있습니다. JBoss 환경에서이 파일을 서버 인스턴스의 conf 디렉토리에 넣을 수 있습니다. 당신과 같이 프로그래밍 conf 디렉토리의 경로를 얻을 수 있습니다 :

String pathToConf = System.getProperty("jboss.server.config.dir"); 

이 당신에게 예를 들어 @Singleton EJB 다시,이 구성 파일을 넣고 다시 응용 프로그램에서 읽을 수있는 기능을 제공합니다.

당신은 매우 복사하여 붙여 넣을 수있는 여기에 더 자세한 답변을 찾을 것입니다

wildfly: reading properties from configuration directory

내가 정말이 옵션을 선호합니다. 파일은 또한 파일 시스템을 보호하기위한 제로 노력이지만, 운영 체제가 당신을 위해 일을합니다. 당신이 환경에 어떤 수정하거나 할 파일을 알고 있다면 그것은 단지 하나 개의 구성 속성 인 경우


자바 속성

를 사용하여, 당신은 단지 명령 줄 속성으로 서버 인스턴스에 전달할 수 이 작업을 수행 할 수 있도록 설정할 변수 (없는 경우 문서화됩니다).매개 변수를 추가 할 수도 있습니다.

-Dmyapp.upload.dir=/path/to/dir 

그런 다음 코드에서 위와 동일한 코드 줄을 사용하여이 속성을 다시 가져옵니다.

String pathToConf = System.getProperty("myapp.upload.dir"); 

이는 개발에 가장 적은 노력입니다. 필자는이 옵션을별로 좋아하지 않습니다. 패치 구성 중에 서버 구성을 변경하면 제어 외부에서 손실 될 수 있습니다.

+0

고마워요! 두 번째 옵션은 나에게 가장 적합하다. –

관련 문제