Доброго всем дня!
Все эти темы освещались, все проделано с учетом замечаний на форуме и HOW-TO, но не помогло.
Исходные данные: W2000Pro, JDK 1.4.2_06 Sun, Tomcat 4.1.31. В common/lib родные библиотеки dbcp & pool лежат, также и JDBC в виде jar файлов.
Две проблемы:
1. Подключение из JSP получается нормально, а из класса нет, вылетает исключение:
javax.naming.NameNotFoundException: Name Bprt is not bound in this Context
. Вот как такое может быть ? Может кто сталкивался ?
2. Запись лога не получилась вообще. Файл образуется в момент старта сервлета (сделано согласно доки), но он нулевой длины. Ерунда какая то.
Вот исходные данные подробнее:
1. Conf XML приложения:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
<Context path="" docBase="">
<Logger className="org.apache.catalina.logger.FileLogger"
directory="D:/..../www/logs" prefix="prt."
suffix=".log" timestamp="true"/>
<Resource auth="Container" name="jdbc/BPrt" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/BPrt">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@ 127 . 0 . 0 . 1 : 1521 :ORA1</value>
</parameter>
<parameter>
<name>username</name>
<value>prt</value>
</parameter>
<parameter>
<name>password</name>
<value>prt</value>
</parameter>
<parameter>
<name>maxActive</name>
<value> 30 </value>
</parameter>
<parameter>
<name>maxIdle</name>
<value> 10 </value>
</parameter>
<parameter>
<name>maxWait</name>
<value> 10000 </value>
</parameter>
</ResourceParams>
</Context>
web.xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<resource-ref>
<description>Connect to schema PRT</description>
<res-ref-name>jdbc/BPrt</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
JDBC пробовал и от 8.1.7 и от 9.0.2. Результат тот же.
Вот кусок кода из JSP
1.
2.
3.
4.
5.
6.
7.
8.
9.
private Context initContext = null;
private Context envContext = null;
private DataSource dataSource = null;
private Connection connection = null;
...
initContext = new InitialContext();
envContext = (Context) initContext.lookup("java:comp/env");
dataSource = (DataSource) envContext.lookup("jdbc/BPrt");
connection = dataSource.getConnection();
Вот кусок кода из класса, который вызывется из сервлета
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
private Context ic = null;
private Context ec = null;
private DataSource dsbe = null;
...
try
{
ic = new InitialContext();
ec = (Context)ic.lookup("java:comp/env");
dsbe = (DataSource) ec.lookup("jdbc/Bprt");
}catch (Exception e){e.printStackTrace();}
Вот на строчке: ec.lookup("jdbc/Bprt") в классе и вываливается исключение. В JSP еще раз скажу - все Ок.
2. Кусок web.xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<servlet>
<servlet-name>initLog4j</servlet-name>
<servlet-class>ru.....initLog4j</servlet-class>
<init-param>
<param-name>log4j-init-file</param-name>
<param-value>WEB-INF/classes/log4j.lcf</param-value>
</init-param>
<load-on-startup> 1 </load-on-startup>
</servlet>
Кусок стартап-сервлета:
1.
2.
3.
4.
5.
6.
7.
8.
public void init() {
String prefix = getServletContext().getRealPath("/");
String file = getInitParameter("log4j-init-file");
// if the log4j-init-file is not set, then no point in trying
if(file != null) {
PropertyConfigurator.configure(prefix+file);
}
}
Вот само проперти
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
log4j.defaultInitOverride = true
log4j.rootLogger=debug, ConsApp
#log4j.logger.org.apache=error
log4j.logger.com.ru.....portal=ALL, FileApp
#ConsApp
log4j.appender.ConsApp=org.apache.log4j.ConsoleAppender
log4j.appender.ConsApp.layout=org.apache.log4j.PatternLayout
log4j.appender.ConsApp.layout.ConversionPattern=%d{HH\:mm\:ss,SSS} %-5p %c - %m%n
# FileApp
log4j.appender.FileApp=org.apache.log4j.RollingFileAppender
log4j.appender.FileApp.File=D:/...../logs/Portal.log
log4j.appender.FileApp.MaxFileSize=100KB
log4j.appender.FileApp.MaxBackupIndex= 1
log4j.appender.FileApp.layout=org.apache.log4j.PatternLayout
log4j.appender.FileApp.layout.ConversionPattern=-- %d [%t] %-5p %c - %m%n
Уважаемые спецы, может в Tomcat 4.1.xx это вообще неразрешимо, и надо на него забить и на 5 перейти ?
Или я какой-то хитрости не понял ?
Заранее спасибо