가장 간단한 솔루션은 데이터 원본을 만든 다음 기본 데이터 원본으로 설정하는 것입니다. 그런 다음 persistence.xml
에 데이터 소스를 설정할 필요조차 없습니다.
예를 들어 다음 CLI 명령은 데이터 소스를 만들고 기본 데이터 소스 (java:comp/DefaultDataSource
)를 설정합니다.
embed-server
# Configure the driver
/subsystem=datasources/jdbc-driver=org.postgresql:add(driver-name=org.postgresql, driver-module-name=org.postgresql, driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)
# Configure the data source
/subsystem=datasources/data-source=postgresql:add(driver-name=org.postgresql, jndi-name="java:/jdbc/PostgresDS", enabled=true, connection-url="jdbc:postgresql://localhost/testdb", user-name=user, password="password")
# Change the default data source name java:comp/DefaultDataSource
/subsystem=ee/service=default-bindings:write-attribute(name=datasource, value=java:/jdbc/PostgresDS)
stop-embedded-server
그런 다음
persistence.xml
에 바로
<jta-data-source>
태그를 제거합니다.
단일 응용 프로그램에서는 작동하지만 프로젝트에서 데이터 원본을 지정하는 것과 비슷한 문제가 발생합니다. 응용 프로그램 및 데이터 원본 이름을 서로 알지 못하게 만들고 응용 프로그램 배포에서 테이블 명명 고려 사항을 제거하려고합니다. 이것은 불행하게도 테이블 명명 충돌을 야기 할 수 있고 또 다른 유형의 단단한 결합을 시행 할 수 있습니다. – KG6ZVP
이것은 좋은 대답은 아니지만 * -ds.xml 배포 설명자를 찾고있을 수 있습니다. https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6.4/html/Administration_and_Configuration_Guide/chap-Datasource_Management.html#Deployment_of_-ds.xml_files. 그 문서가 가장 큰 것은 아니지만 https://github.com/wildfly/quickstart/blob/11.x/kitchensink/src/main/webapp/WEB-INF/kitchensink-quickstart-ds에서 예제를 볼 수 있습니다. xml # L22. –
ds 배포는 필자가 피하려고하는 타이트 커플 링에 집착 할뿐만 아니라 추가 배포 복잡성을 초래하기 때문에 더욱 악화됩니다. 나는 지금 내가해야 할 일이 가능한지 아닌지에 관한 문제라고 생각한다. – KG6ZVP