Làm thế nào để sử dụng một tên JNDI duy nhất trong ứng dụng web của bạn
Tôi đã vật lộn với điều này trong một vài tháng bản thân mình. Giải pháp tốt nhất là làm cho ứng dụng của bạn di động để bạn có cùng tên JNDI trong cả Tomcat và Weblogic.
Để làm điều đó, bạn thay đổi web.xml
và spring-beans.xml
để trỏ đến một tên jndi duy nhất và cung cấp ánh xạ tới từng tên jndi của nhà cung cấp cụ thể.
Tôi đã đặt từng tệp bên dưới.
Bạn cần:
- Một entry
<resource-ref />
trong web.xml cho ứng dụng của bạn sử dụng một cái tên duy nhất
- Một tập tin
WEB-INF/weblogic.xml
để ánh xạ tên jndi của bạn đến tài nguyên của WebLogic
- Một tập tin quản lý
META-INF/context.xml
để ánh xạ tên jndi của bạn với tài nguyên được quản lý bởi Tomcat
- Điều này có thể nằm trong cài đặt Tomcat hoặc trong ứng dụng của bạn.
Theo nguyên tắc chung, thích có tên jndi bạn trong ứng dụng của bạn như jdbc/MyDataSource
và jms/ConnFactory
và tránh tiền tố họ với java:comp/env/
.
Ngoài ra, nguồn dữ liệu và nhà máy kết nối được quản lý tốt nhất bởi vùng chứa và được sử dụng với JNDI. Đó là common mistake to instantiate database connection pools in your application.
mùa xuân
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd">
<jee:jndi-lookup jndi-name="jdbc/appds"
id="dataSource" />
</beans>
web.xml
<resource-ref>
<description>My data source</description>
<res-ref-name>jdbc/appds</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
weblogic.xml
<?xml version="1.0" encoding="UTF-8" ?>
<weblogic-web-app
xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://xmlns.oracle.com/weblogic/weblogic-web-app http://http://www.oracle.com/technology/weblogic/weblogic-web-app/1.1/weblogic-web-app.xsd">
<resource-description>
<jndi-name>appds</jndi-name>
<res-ref-name>jdbc/appds</res-ref-name>
</resource-description>
</weblogic-web-app>
META-INF/ngữ cảnh.xml (đối với Tomcat)
<Context>
<ResourceLink global="jdbc/appds" name="jdbc/appds" type="javax.sql.DataSource"/>
</Context>
Tại sao bạn sử dụng thư viện ActiveMQ để kết nối với weblogic? – wmarbut