اختراق تجمع اتصال JNDI (قم بتكوين تجمع الاتصال من خلال واجهة الإدارة ضمن Tomcat5.5)
الكاتب:Eve Cole
وقت التحديث:2009-07-03 16:56:20
كسر تجمع اتصال JNDI - -
بعد عدة أيام من العمل الشاق، يمكنني أخيرًا الاتصال بمجمع الاتصال، وقد أشرت إلى العديد من المشاركات التي كتبها الأبطال في هذا الصدد، والآن سأقوم بتدوين العديد من المشكلات التي ظهرت في الأيام القليلة الماضية هنا:
1. ضع برامج تشغيل jdbc الثلاثة (ضرورية) ضمن Tomcat_homecommon، والتي يمكن تنزيلها من موقع Microsoft الإلكتروني. اسم المستخدم الافتراضي لـ SQLSERVER2k المثبت هو sa، وكلمة المرور فارغة، ولكن لا يهم إذا كانت كلمة المرور فارغة. هذا يعني أنه لا توجد كلمة مرور، لذا يجب عليك تحديد اسم المستخدم وكلمة المرور في عنوان URL الخاص بك، ومن الأفضل إعادة تعيين كلمة المرور. إذا كان هناك خطأ لا يمكن اقتباسه، فعادةً ما يكون ذلك بسبب عدم كتابة المسار بشكل صحيح مسار Tomcat هو tomcat_homewebapps، ولكن استخدم 5.5 .x، فقط اتبع الطريقة الموضحة أدناه ليست هناك حاجة لتكوين المسار، وليست هناك حاجة لتكوين المرجع في youwebappWEB-INFweb.xml. يختلف تكوين server.xml لإصدار tomcat5.5.x عن تكوين tomcat5.0، فيما يلي ثلاث طرق تكوين في tomcat5.5.x. إذا كان التكوين غير صحيح، javax.naming.NameNotFoundException: الاسم غير مرتبط بطريقة خطأ السياق هذه 1. تجمع اتصال قاعدة البيانات العامة
1. قم بتكوين تجمع الاتصال من خلال واجهة الإدارة، أو قم بإضافته مباشرة إلى GlobalNamingResources في tomcatconfserver.xml
<اسم المورد = "jdbc/mydb" نوع = "javax.sql.DataSource" كلمة المرور = "mypwd" driverClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle = "2" maxWait = "5000" validationQuery = "حدد 1" اسم المستخدم = "sa" url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive = "4"/>
2. أضف ما يلي إلى سياق tomcatwebappsmyappMETA-INFcontext.xml:
<ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>
هذا كل شيء.
الطريقة الثانية: تجمع اتصال قاعدة البيانات العالمية
1. نفس ما ورد أعلاه
2. أضف ما يلي إلى سياق tomcatconfcontext.xml:
<ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>
الطريقة الثالثة: يجب إضافة تجمع اتصال قاعدة البيانات المحلية فقط إلى سياق TomcatwebappsmyappsMETA-INFcontext.xml:
<اسم المورد = "jdbc/mydb" نوع = "javax.sql.DataSource" كلمة المرور = "mypwd" driverClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle = "2" maxWait = "5000" validationQuery = "حدد 1" اسم المستخدم = "sa" url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive = "4"/>
وصف المعلمة:
DriveClassName: الاسم الكامل لفئة برنامج تشغيل JDBC؛
maxActive: الحد الأقصى لعدد المثيلات المتاحة التي يمكن تخصيصها من تجمع الاتصال في نفس الوقت؛
maxIdle: الحد الأقصى لعدد الاتصالات التي يمكن أن تكون خاملة في تجمع الاتصال في نفس الوقت؛
maxWait: الحد الأقصى للمهلة، بالمللي ثانية؛
كلمة المرور: كلمة مرور المستخدم؛
عنوان url: اتصال URL بـ JDBC؛
المستخدم: اسم المستخدم؛
validationQuery: يستخدم للاستعلام عن الاتصالات الخاملة في التجمع.
الطرق الثلاث المذكورة أعلاه كلها متاحة ضمن Tomcat 5.5.4. بالإضافة إلى ذلك، فإن برنامج تشغيل jdbc لخادم SQL هو SQL Server jdbc (sp3) الذي تم تنزيله من موقع Microsoft على الويب.
4. خطأ org.apache.tomcat.dbcp.dbcp.SQLNestedException: لا يمكن إنشاء PoolableConnectionFactory ([Microsoft] [SQLServer 2000 Driver for JDBC] خطأ في إنشاء مأخذ التوصيل.) هذه مشكلة صغيرة لأن خدمة SQLSERVER2K الخاصة بي قد تم تغييرها إلى خدمة يدوية، لذا يجب عليك بدء تشغيل SQLSERVER2K يدويًا بعد كل بدء تشغيل، نظرًا لأنه بدأ دون أن تتذكر، يتم الإبلاغ عن بعض الأخطاء، لذلك إذا كنت تستخدم SQLSERVER2K غالبًا، فمن الأفضل عدم تغييره إلى بدء التشغيل اليدوي.