- PR -

CentOS で サーブレット を使って OracleDB と接続

1
投稿者投稿内容
初心者
会議室デビュー日: 2008/04/14
投稿数: 2
投稿日時: 2008-04-14 03:56
はじめまして。
お忙しいところ恐縮ですが、よろしくお願い致します。


<目的>
 「サーブレットを利用して、OracleDBと接続」することを目的としています。
 現状、Webブラウザにて閲覧し、Tomcatによるエラーメッセージが表示されてしまいます。


<環境>
 CentOS : 4.6
 Java : jdk1.5.0_14
 Apache : 2.0.52
 Tomcat : 6.0.16
 JK : 1.2.26
 Oracle : 10.2.0.1.0(XE)

# echo $CLASSPATH
.:/usr/java/jdk1.5.0_14/jre/lib:/usr/java/jdk1.5.0_14/lib:/usr/java/jdk1.5.0_14/lib/tools.jar:.:/usr/java/jdk1.5.0_14/jre/lib:/usr/java/jdk1.5.0_14/lib:/usr/java/jdk1.5.0_14/lib/tools.jar:/usr/local/tomcat/lib/servlet-api.jar:/usr/local/tomcat/lib/lib/jsp-api.jar:/usr/local/tomcat/lib:/usr/local/tomcat/lib:/usr/local/tomcat/lib/servlet-api.jar:/usr/local/tomcat/lib/jsp-api.jar:/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/jdbc/lib/ojdbc14.jar:/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/jdbc/lib/ojdbc14_g.jar
(/etc/profileには繰り返し同じパスは書いてないのですが....)


#/etc/httpd/conf.d/jk.conf
JkMount /jsp/* ajp13



<現状>

http://www.atmarkit.co.jp/fjava/rensai/jdbc02/jdbc02.html
を参考にして、JavaDataAccess01.javaを(コピペですが)作成し、
(oracle URLは変更します....今回はそれ以前ですが...)

ソースは、
jsp/WEB-INF/src/内に。
javacよりコンパイルも正常にすることができ、
クラスは、
jsp/WEB-INF/src/JavaDataAccess01.class
が出来た事を確認。
# コンテキスト名「jsp」

web.xml内で、アプリの登録。
##ここから
<servlet>
<servlet-name>JavaDataAccess01</servlet-name>
<servlet-class>JavaDataAccess01</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>JavaDataAccess01</servlet-name>
<url-pattern>/JavaDataAccess01</url-pattern>
</servlet-mapping>
##ここまで


<エラーメッセージ>
http://x.x.x.x/jsp/JavaDataAccess01 へアクセス

##ここから

HTTPステータス 500 -

type 例外レポート

メッセージ

説明 The server encountered an internal error () that prevented it from fulfilling this request.

例外

javax.servlet.ServletException: サーブレットクラス JavaDataAccess01 を初期化中にエラーが発生しました
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
java.lang.Thread.run(Thread.java:595)
原因

java.lang.IllegalAccessException: Class org.apache.catalina.core.StandardWrapper can not access a member of class JavaDataAccess01 with modifiers ""
sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)
java.lang.Class.newInstance0(Class.java:344)
java.lang.Class.newInstance(Class.java:303)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
java.lang.Thread.run(Thread.java:595)
注意 原因のすべてのスタックトレースは、Apache Tomcat/6.0.16のログに記録されています

Apache Tomcat/6.0.16

##ここまで


<備考?>
下記のアプリは正常に表示されました。
http://x.x.x.x/jsp/HelloServlet

HelloServlet.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloServlet extends HttpServlet {

public void doGet( HttpServletRequest request,
HttpServletResponse response )
throws IOException, ServletException {

PrintWriter out = response.getWriter();
out.println("Hello! John!");
}
}



何か設定が間違っているからエラーが出るのでしょうけど、何を間違えているのかわかりません。。。。
なぜに初期化中にエラーが出るのか、探し方が悪いのか改善できる方法を探し出せませんでした。
サーブレットは独学故に知識も断片している所も有り、不備お掛け致しますが、ご教授よろしくお願い致します。

また、不足している情報等がありましたら都度展開致します。。。


1

スキルアップ/キャリアアップ(JOB@IT)