2012-05-10 5 views
5

मैं एक वेब एप्लिकेशन (जेईई 6, ईजेबी वेबप्रोफाइल) लागू करता हूं जो ओरेकल डीबी का उपयोग करता है। मेरी समस्या यह है कि मुझे उपयोग किए गए डेटाबेस स्कीमा (नाम) को एप्लिकेशन को पुन: संकलित/पुनर्निर्मित किए बिना बदलने की आवश्यकता है। तो मैं क्या चाहता हूं (यह केवल एक विचार है, शायद किसी के पास बेहतर है), सर्वर के भीतर कुछ कॉन्फ़िगरेशन (जेएनडीआई) होना है, जो स्कीमा नाम निर्दिष्ट करता है। लेकिन Eclipse लिंक को रनटाइम पर किसी अन्य स्कीमा नाम का उपयोग करने के लिए कॉन्फ़िगर कैसे करें?जेपीए - ग्रहण लिंक - रनटाइम पर डेटाबेस स्कीमा नाम को कॉन्फ़िगर कैसे करें

विवरण:

फिलहाल मैं orm.xml फ़ाइल का उपयोग स्कीमा नाम निर्दिष्ट करने के लिए। लेकिन एप्लिकेशन तीन अलग-अलग स्कीमा नामों का उपयोग करता है (विकास के लिए एक, एकीकरण परीक्षण के लिए एक, और उत्पादन के लिए एक), इसलिए मुझे आवेदन को 3 बार संकलित और पैकेज (मैवेन) करने की आवश्यकता है।

मेरे पास एक जेईई 6 ईजेबी वेबप्रोफाइल एप्लिकेशन है जो एक ओरेकल डीबी का उपयोग करने के साथ ग्लासफ़िश पर चल रहा है और डाटाबेस कनेक्शन को एप्लिकेशन सर्वर द्वारा संभाला जाता है और जेएनडीआई के माध्यम से एप्लिकेशन को साबित किया जाता है।

क्या किसी भी शरीर को यह पता है कि रनटाइम पर डेटाबेस स्कीमा नाम को कॉन्फ़िगर कैसे करें।

+0

आप स्क्रिप्ट है कि उत्पादन में एक ही स्रोत कोड, लेकिन विभिन्न orm.xml साथ प्रत्येक परिवेश के लिए 3 कलाकृतियों ताकि आप क्रम – DaTroop

+0

पर स्कीमा का नाम बदलने की जरूरत नहीं होगी होगा बना सकते हैं देखें http://stackoverflow.com/ क्यू/5104185/366964 और http://stackoverflow.com/q/9315593/366964 मदद कर सकता है। –

उत्तर

8

आप एक EclipseLink SessionCustomizer उपयोग कर सकते हैं।

package some.java.package; 

import org.eclipse.persistence.config.SessionCustomizer; 
import org.eclipse.persistence.sessions.Session; 
import org.eclipse.persistence.sessions.DatabaseLogin; 

public class MySessionCustomizer implements SessionCustomizer { 

    private String schema = "some_schema"; 
    public MySessionCustomizer() { 
     schema = ... // read from property, jndi, etc. 
    } 

    public void customize(Session session) { 
     session.getLogin().setTableQualifier(schema); 
    } 
} 
1

डेटा स्रोत का उपयोग करने के लिए जेपीए कॉन्फ़िगर करें। फिर आप अपने ऐप सर्वर के अनुप्रयोगों के लिए विभिन्न डेटा स्रोतों को कॉन्फ़िगर कर सकते हैं।

वैकल्पिक रूप से आप गुण का एक सेट पारित करके एक EntitymanagerFactory बना सकते हैं: http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManagerFactory.html#createEntityManager%28java.util.Map%29

संबंधित मुद्दे