2014-08-30 1 views
3

WebSphere에 'jdbc/dataSource1'이라는 JDBC 데이터 소스가 정의되어 있습니다.
Spring을 기반으로하는 응용 프로그램에서 jndi 조회를 사용하여 데이터 소스를 가져오고 싶지만 'jdbc/dataSource2'와 같은 다른 이름으로 가져오고 싶습니다. 다음 난 web.xml 파일에 데이터 소스를 정의데이터 소스 자동 바인딩

또한
<resource-ref binding-name="jdbc/dataSource2" name="jdbc/dataSource1"/> 

:
이것을 달성하기 전 다음과 같이 i는 결합을 정의하는, IBM 웹 bnd.xml 파일을 생성

<resource-ref> 
    <description>some awesome datasource</description> 
    <res-ref-name>jdbc/dataSource2</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 

이 솔루션은 IBM Web Console을 사용하여 배치하는 동안에 만 작동합니다. 는 wsadmin 스크립트에서

ADMA0007E: A Validation error occurred in task Mapping resource references to re 
sources. The Java Naming and Directory Interface (JNDI) name is not specified f 
or reference binding jdbc/dataSource2 in module <application_name>.war" 

내가 AdminApp.install (path_to_ear, 옵션)를 사용, 옵션 변수가 가상 호스트에 대한 유일한 옵션이 포함되어 있습니다 : 내가 wsadmin 도구를 사용하여 사용자 정의 자이 썬 스크립트를 사용하여 배포 할 때, 나는 다음과 같은 오류가 발생합니다 맵핑.

그래서해야 할 일은 무엇일까? WebSphere가 ibm-web-bnd.xml 파일에서 데이터 소스 매핑 옵션을 가져올 수 있습니까?

+0

http://stackoverflow.com/questions/ : - 그래서 datasource1 귀하의 경우 이름에 너무

<resource-ref name="jdbc/MyRef" binding-name="jdbc/JNDI" /> 

이 datasource2하고 바인딩 jndiname이다 : 당신의 바인딩 파일에 다른 방법으로 주위해야한다 19096482/binding-container-managed-authentication-alias-with-datasource-using-jython-scri –

답변

3

옵션없이 AppAdmin.install (path_to_ear)을 호출 해보십시오. 그러면 옵션이 bnd 파일에서 읽히고 유효성 검사 오류가 없습니다. 그리고 ibm-web-bnd.xml 파일이 ear 파일에 있는지 확인하십시오.

UPDATE

좋아, 난 당신의 오류를 발견했습니다.

<resource-ref binding-name="jdbc/dataSource1" name="jdbc/dataSource2"/> 
+1

나는 노력했다, 나는 나에게 질문에 넣어 오류를 줬다. 'ibm-web-bnd.xml'에 대해서 - 내 응용 프로그램에서는 ear 파일 내부에 war 파일에 있습니다. 내가 제대로하고 있니? :) – crew4ok

+0

web.xml 바로 옆 WEB-INF 폴더에 있어야합니다. – Gas

+1

@ crew4ok 파일 바인딩에 오류가 있습니다. 업데이트 된 답변을 참조하십시오. – Gas

2

MapResEnvRefToRes 옵션을 AdminApp.install 리소스에 대한 리소스 참조 매핑에 추가해야합니다. 이상이 링크를 확인하십시오

http://www-01.ibm.com/support/knowledgecenter/api/content/SSEQTP_8.5.5/com.ibm.websphere.nd.multiplatform.doc/ae/rxml_taskoptions.html#rxml_taskoptions__cmd56

그것을 완수하는 가장 빠른 방법은 "명령 지원 로깅"을 사용하고 adminconsole을 통해 설치를 진행하는 것입니다. 명령 지원 로그에서 실제 자원에 대한 자원 참조의 배치 및 맵핑에 대한 정확한 AdminApp.install 구문을 찾을 수 있습니다.

광고 모드당신이 (설치하지 한 응용 프로그램)보다 정교한 자동화 프로젝트를 고려하는 경우

(내가 아래에 언급 된 OSS 프로젝트에 기여하고 있습니다), 당신은 유용한 WDR 라이브러리를 찾을 수 있습니다. WDR을 사용하면 모든 응용 프로그램 설정을 MapResEnvRefToRes 설정을 포함하는 매니페스트 파일로 내보낼 수 있습니다. 그런 다음 해당 매니페스트를 기반으로 응용 프로그램을 배포 할 수 있습니다.

+1

데이터 소스 정의를 복제 한 것 같지 않으므로 Map * 옵션을 임시 해결책으로 생각 했습니까? 나는 이미 web.xml과 ibm-web-bnd에 정의했다.XML 파일을 두 번 지정하지 않고 WebSphere가 데이터 소스 매핑을 알아낼 수 없습니까? (ibm-web-bnd.xml과 배포 스크립트를 의미합니다.) – crew4ok

+1

btw, 당신이 언급 한 라이브러리가 나에게 정말 유용하게 보일지 모르겠지만, 나는 (예를 들어, wsadminlib.py에있는 하나의 파일에 반대되는) 많은 파일들로 구성되어있다. 그리고 나는 배포 스크립트를 가능한 많은 WS 인스턴스에서 ssh를 통해 복사되기 때문에 가능합니다. – crew4ok