الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تغير في ملفات Tomcat للربط الجافا بأوراكل (jndi)

بدأه زكيري عبد العالي في 10 يوليو 2008 · 5 رد · 1,396 مشاهدة · في JavaEE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

المشكلة في هده الرسالة

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'

حيث انه طلب مني ربط الاوراكل مع الجافا عن طريق مايلي

1- التغيير في ملف server.xml

التغيير على مستوئ Resource name

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JasperListener" />
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <GlobalNamingResources>
	<Resource name="jdbc/myoracle" auth="Container"
					type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
					url="jdbc:oracle:thin:@اسم السرفر:1521:XE"
					username="المستحدم" password="كلمة السر" maxActive="20" maxIdle="10"
					maxWait="-1"/>
  </GlobalNamingResources>  
  <Service name="Catalina">
	<Connector port="8080" protocol="HTTP/1.1" 
			   connectionTimeout="20000" 
			   redirectPort="8443" />
	<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

	<Engine name="Catalina" defaultHost="localhost">
	  <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
			 resourceName="UserDatabase"/>
	  <Host name="localhost"  appBase="webapps"
			unpackWARs="true" autoDeploy="true"
			xmlValidation="false" xmlNamespaceAware="false">
	  </Host>
	</Engine>
  </Service>
</Server>

2- يانشاء الملف index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import ="java.sql.*"%>
<%@ page import ="javax.sql.*"%>
<%@ page import ="javax.naming.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
try
{
Context initContext = new InitialContext();
Context envContext  = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
Connection conn = ds.getConnection();
}
catch (Exception e) 
{
out.println(e);
}
%>
</body>
</html>

3-التغيير في الملف web .xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>
test_Oracle</display-name>
<welcome-file-list>
  <welcome-file>index.html</welcome-file>
  <welcome-file>index.htm</welcome-file>
  <welcome-file>index.jsp</welcome-file>
  <welcome-file>default.html</welcome-file>
  <welcome-file>default.htm</welcome-file>
  <welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<resource-ref>
   <description>Oracle Datasource example</description>
   <res-ref-name>jdbc/myoracle</res-ref-name>
   <res-type>javax.sql.DataSource</res-type>
   <res-auth>Container</res-auth>
</resource-ref>

</web-app>

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 10 يوليو 2008 في 14:32

#2

ولماذا كل هذا التعقيد في عملية الربط بالاوراكل

المسالة لا تتعدى سوى تحميل Driver وانشاء URL وتعريف الاتصال

يعني طريقة تغير ملفات TOMCAT لاجل عملية الربط ارى انها معقدة بعض الشيء .

#3

شكرا اخي على هدا الرد

اقتباس
حيث انه طلب مني ربط الاوراكل مع الجافا عن طريق مايلي

TOMCAT لاجل عملية الربط ارى انها معقدة بعض الشي

ليس الا لعملية الربط لكنها هي اول خطوة فقط ولا يوجد بديل عما اريد عمله هدا ما اخبرني به مهندس المشروع

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 10 يوليو 2008 في 14:29

#4

يعني انا لم اتبع طريقتك في عملية الربط سواء مع اي قاعدة بيانات وليس الاراكل خصوصاً

فلا اقوم بالتغيير على ملف web.xml . المسالة لا تاخذ مني سوى خمس دقائق في عملية الربط

ولكن ليست لدي خلفية كبيرة حول هذا الملف وهو خصائص . والا كنت افدت بهذا الامر بشكل ممتاز

بالتوفيق لك ..

#5

يعني ارى ان هنالك خطا في URL الخاص بالاوراكل

وبالتحديد في هذا .

<Resource name="jdbc/myoracle" auth="Container"
					type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
					url="jdbc:oracle:thin:@اسم السرفر:1521:XE"
					username="المستحدم" password="كلمة السر" maxActive="20" maxIdle="10"
					maxWait="-1"/>

قم بجعل قيمة driverClassName كالتالي :

oracle.jdbc.driver.OracleDriver

اما الـURL فيكون شكلة كالتالي :

jdbc:oracle:thin:@localhost:1521:[sid]

بالنسبة للـsid يعني لابد ان تقوم بالدخول على ملف NET80 الموجود في ملفات الاوراكل لكي تاخذ القيمة من هناك

وتضها في هذا الحقل للتم عملية الربط .

يعني هذا ما ارى وبالتوفيق لك .

#6

بارك الله فيك اخي اما الملاحظة الاولى الاثنين صحيحتين

اما الثانية هو راجع لكتابتي بالعربيه فقط لكني كتبتها صحيح في برنامجي

لا عليك :cash: وجدت الحل

هو في ملف الاكسمل

لانه تغييره يختلف بين sql server و oracle حيث ويلزم اضافة هدا

	<Context path="/test" docBase="test">  
		<Resource name="jdbc/myoracle" auth="Container"
			  type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
			  url="jdbc:oracle:thin:@XXXX:1521:XE"
			  username="XXXX" password="XXXX" maxActive="20" maxIdle="10"
			  maxWait="-1"/> 
		 </Context>

مواضيع مشابهة