server.xml में मैं वैश्विक संसाधन परिभाषित किया है (मैं उपयोग कर रहा हूँ बिलाव 6):चर्चा करते हुए persistence.xml में बिलाव JNDI डेटा स्रोत
<GlobalNamingResources>
<Resource name="jdbc/myds" auth="Container"
type="javax.sql.DataSource"
maxActive="10" maxIdle="3" maxWait="10000"
username="sa" password=""
driverClassName="org.h2.Driver"
url="jdbc:h2:~/.myds/data/db"
/>
</GlobalNamingResources>
मैं catalina.out कि इस बाध्य है में देखते हैं, तो मुझे लगता है कि यह ठीक है।
अपने वेब ऐप्लिकेशन में मैं डेटा स्रोत के लिए लिंक है, मुझे यकीन है कि यह ठीक है नहीं कर रहा हूँ:
<Context>
<ResourceLink global='jdbc/myds' name='jdbc/myds' type="javax.sql.Datasource"/>
</Context>
और आवेदन में वहाँ persistence.xml है:
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="oam" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>jdbc/myds</non-jta-data-source>
<!-- class definitions here, nothing else -->
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
</properties>
</persistence-unit>
</persistence>
यह होना चाहिए ठीक है, लेकिन शायद यह या संसाधन स्रोत परिभाषा गलत है क्योंकि मुझे मिल रहा है:
javax.naming.NameNotFoundException: नाम jdbc इस संदर्भ में
क्या गलत है और यह क्यों काम नहीं करता है?
अद्यतन:
मैं सीधे डेटा स्रोत प्राप्त करने के लिए कोशिश की है:
public class WebAppListener implements ServletContextListener
{
// ServletContextListener interface - start
public void contextInitialized(ServletContextEvent sce)
{
try
{
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)
envCtx.lookup("jdbc/myds");
}
catch (NamingException ex)
{
System.out.println("!!!! Got NamingException:");
ex.printStackTrace(System.out);
}
}
public void contextDestroyed(ServletContextEvent sce) { }
}
मेरे web.xml:
<listener>
<display-name>Listener</display-name>
<listener-class>WebAppListener</listener-class>
</listener>
अब भी वही त्रुटि हो रही है, हालांकि मैं देख रहा हूँ जब मैं टॉमकैट (कैटालिना - डेटासोर्स - javax.sql.Datasource = "jdbc/myds":से कनेक्ट करता हूं तो जेएमएक्स कंसोल में डेटासोर्सऑब्जेक्टनाम = कैटालिना: टाइप = डेटासोर्स, क्लास = javax.sql.DataSource, name = "jdbc/myds"।)
क्या आपने अपनी समस्या का समाधान किया है? यदि हां, तो कैसे? – artaxerxe
दुर्भाग्य से नहीं, कुछ अवधारणा शिफ्ट की वजह से कोई और मांग नहीं थी। –