كيف يمكنني تغيير persistence.xml في وقت التشغيل

StackOverflow https://stackoverflow.com/questions/991750

  •  13-09-2019
  •  | 
  •  

سؤال

أنا جديد في openjpa.

لدي سيناريو حيث، اعتمادا على الخادم حيث يعمل تطبيقي، أحتاج إلى تغيير الإعدادات إلى persistance.xml. على سبيل المثال. إذا كان تشغيله على الخادم A، فعليه استخدام قاعدة بيانات مختلفة (عنوان URL مختلف)، كلمة مرور مختلفة وما إلى ذلك، وإذا كان التطبيق قيد التشغيل على الخادم B، فعليه استخدام معلومات مختلفة.

ويمكنك أيضا أن تخبرني، بأي طريقة يجب القيام بها، باستخدام DataSource أو ببساطة وضع الخصائص تحت وحدة الثبات.

لي أنا أستخدم تطبيق WS. خادم 7 و RAD 7.5

أي نوع من المساعدة سيكون موضع تقدير كبير.

هل كانت مفيدة؟

المحلول

أنت تستخدم خادم تطبيقات حتى لا تحتاج إلى تعيين إعدادات اتصال قاعدة البيانات في ملف persistence.xml. يجب أن تكون قادرا على إنشاء مصدر بيانات JNDI في Appserver الخاص بك ثم استخدام ذلك. يمكن أن يكون لكل خادم مصدر البيانات له نفس اسم JNDI ثم لن تكون هناك حاجة لأي اختلافات persistence.xml.

ورشة عمل و JPA و DataSources يبدو ذات صلة خاصة بك. كما يفعل إعداد مصدر بيانات JNDI في WebSphere 6.0 / 6.1 و Websphere + Jndi + Framework + Sprenate.

هل تستخدم الربيع؟ إذا كان الأمر كذلك، فمن السهل حل المشكلة: لا تضع معلومات مصدر البيانات في persistence.xml الخاص بك، يمكنك وضعها في سياق التطبيق الخاص بك ولديها تكوين مختلف على كل خادم.

علي سبيل المثال:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="classpath:database.properties"/>
</bean>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${database.class}"/>
    <property name="url" value="${database.url}"/>
    <property name="username" value="${database.username}"/>
    <property name="password" value="${database.password}"/>
</bean>

ويمكن أن يكون لكل خادم قاعدة قاعدة بيانات مختلفة. ملفproperties ملف على كل خادم (حيث يوجد كل منها في ClassPath في مكان ما في هذا المثال):

database.username=scratch
database.password=scratch
database.class=oracle.jdbc.OracleDriver
database.url=jdbc:oracle:thin:@localhost:1521:XE

ستكون تغيير persistence.xml في وقت التشغيل مشكلة ما هي ليست حقا كيف تم تصميم JPA.

بالطبع، يمكنك استخدام مصادر بيانات JNDI مع الربيع أيضا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top