- PR -

JSPエラー

1
投稿者投稿内容
牙狼
会議室デビュー日: 2004/06/09
投稿数: 16
投稿日時: 2004-06-09 21:48
初めての投稿です。早速質問なのですが、
JSPを実行したらこんなエラーが出ました。

org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:305)


    と


java.lang.NullPointerException
org.apache.jsp.flash_jsp._jspService(flash_jsp.java:101)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:305)

です。どうしてエラーが出るのか調べてみたんですが、分かりませんでした。ソースは下です。

flash.jsp------------------------------------------------

<%@ page language="java" contentType="text/html; charset=shift_jis"%>
<%@ page import="java.util.Vector, java.util.Hashtable" %>
<jsp:useBean id="bean" scope="session" class="flashlink.FlashDBBean">
<% bean.doSelect();%>
</jsp:useBean>
<%
Vector result = bean.getResult();
int setboolean = bean.getboolean();
int nowclassmun;
int nextclassmun;
int setmun;
String setcode = request.getParameter("action");

String classname[] = new String[10];
classname[0] = "タイトル0";
classname[1] = "タイトル1";
classname[2] = "タイトル2";
classname[3] = "タイトル3";
classname[4] = "タイトル4";
classname[5] = "タイトル5";
classname[6] = "タイトル6";
classname[7] = "タイトル7";
classname[8] = "タイトル8";
classname[9] = "タイトル9";
%>
<HTML>
<HEAD>
<TITLE></TITLE>
<LINK rel="stylesheet" href="link.css" type="text/css">
</HEAD>
<BODY background="image/topbg.gif" TOPMARGIN="0">
<%-- -------------------------------------------------- --%>
<%
if(setboolean == 1){
nowclassmun=0;
nextclassmun=1;
%>
<CENTER>
<TABLE border="0" cellpadding="2" cellspacing="2" width="100%" class="none">
<TBODY>
<TR>
<TD colspan="3" class="menua" align="center">■ <%=classname[0] %> ■</TD>
</TR>
<%
for(int i = 0; i < result.size(); i++){
Hashtable hash = (Hashtable)result.get(i);
nowclassmun = ((Integer)hash.get("class")).intValue();
if(nowclassmun < nextclassmun){
%>
<TR>
<TD class="menub" width="230"><A href="<%=hash.get("url") %>"><%=hash.get("title") %></A></TD>
<TD class="menuc"><%=hash.get("comment") %></TD>
<TD class="menuc" width="200"><%=hash.get("producer") %></TD>
</TR>
<%
}else if(nowclassmun >= nextclassmun){
%>
</TBODY>
</TABLE>
<BR>
<BR>
<BR>
<TABLE border="0" cellpadding="2" cellspacing="2" width="100%" class="none">
<TBODY>
<TR>
<TD colspan="3" class="menua" align="center">■ <%=classname[nowclassmun] %> ■</TD>
</TR>
<TR>
<TD class="menub" width="230"><A href="<%=hash.get("url") %>"><%=hash.get("title") %></A></TD>
<TD class="menuc"><%=hash.get("comment") %></TD>
<TD class="menuc" width="200"><%=hash.get("producer") %></TD>
</TR>
<%
nextclassmun = nowclassmun+1;}
};
%>
</TBODY>
</TABLE>
<BR>
</CENTER>
<% } %>
<%-- -------------------------------------------------- --%>
<%
if(setboolean == 2){
setmun = Integer.parseInt(setcode);
%>
<CENTER>
<TABLE border="0" cellpadding="2" cellspacing="2" width="100%" class="none">
<TBODY>
<TR>
<TD colspan="3" class="menua" align="center">■ <%=classname[setmun] %> ■</TD>
</TR>
<%
for(int i = 0; i < result.size(); i++){
Hashtable hash = (Hashtable)result.get(i);
%>
<TR>
<TD class="menub" width="230"><A href="<%=hash.get("url") %>"><%=hash.get("title") %></A></TD>
<TD class="menuc"><%=hash.get("comment") %></TD>
<TD class="menuc" width="200"><%=hash.get("producer") %></TD>
</TR>
<% } %>
</TBODY>
</TABLE>
<BR>
</CENTER>
<% } %>
</BODY>
</HTML>

FlashDBBean.java-------------------------------------------------

package flashlink;

import java.sql.*;
import java.util.*;
import java.util.Vector;
import java.util.Hashtable;

public class FlashDBBean {
private Connection con = null;
private Statement stmt = null;
private DBinterface pool;

private int setboolean;
private String setcode = null;
private String query;
private Vector result;

public FlashDBBean() throws Exception{
result = null;
con = null;
pool = DBinterface.getInstance();

if(setcode==null){setcode="all";}
if(setcode!=null && setcode.equals("all")){
setboolean = 1;
query = "select * from flash order by class asc";
}else{
setboolean = 2;
query = "select * from flash where class = '"+setcode+"' order by class asc";
}
}

public Vector doSelect() throws Exception {
try {
con = pool.getConnection();
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);

stmt.close();
pool.freeConnection(con);

return resultSetToVector( rs );
} catch( SQLException e ) {
;
}
return null;
}

// Vector挿入
private Vector resultSetToVector(ResultSet rs) {
Vector v = new Vector();
try {
ResultSetMetaData meta = rs.getMetaData();
int cols = meta.getColumnCount();
while( rs.next() ) {
Hashtable h = new Hashtable();
for (int i=1; i <= cols; i++) {
h.put( meta.getColumnName(i), rs.getObject(i) );
}
v.add(h);
}
} catch ( Exception e ) {;}
return v;
}

public Vector getResult() { return result; }
public int getboolean() { return setboolean; }
}

DBinterface.java-------------------------------------------------

package flashlink;

import java.sql.*;
import java.util.*;

public class DBinterface {
private String driver;
private String url;
private String user;
private String password;

private int maxConnection;
private int checkedOut;
private Vector connectionPool = new Vector();
private static DBinterface instance;

// インスタンスを取得
public static synchronized DBinterface getInstance() {
if (instance == null) {
instance = new DBinterface();
}
return instance;
}

//コンストラクタ
private DBinterface() {
this.driver = "org.gjt.mm.mysql.Driver";
this.url = "jdbc:mysql://localhost:3036/flashkink?useUnicode=true&characterEncoding=SJIS";
this.user = "";
this.password = "";
this.maxConnection = 10;
}

// コネクションを取得
public synchronized Connection getConnection() throws Exception {
Connection con = null;
if (connectionPool.size() > 0) {
con = (Connection) connectionPool.firstElement();
connectionPool.removeElementAt(0);
try {
if (con.isClosed()) {
con = getConnection();
}
} catch (SQLException e) {
con = getConnection();
}
} else if (maxConnection == 0 || checkedOut < maxConnection) {
con = newConnection();
}
if (con != null) {
checkedOut++;
}
return con;
}

// 新規にコネクションを作成
private Connection newConnection() throws Exception {
Class.forName(driver);
return DriverManager.getConnection(url, user, password);
}

// コネクションを返却
public synchronized void freeConnection(Connection con) {
connectionPool.addElement(con);
checkedOut--;
notifyAll();
}

// すべてのコネクションを開放
public synchronized void release() {
Enumeration enumConnections = connectionPool.elements();
while (enumConnections.hasMoreElements()) {
Connection con = (Connection)enumConnections.nextElement();
try {
con.close();
} catch (SQLException e) {
}
}
connectionPool.removeAllElements();
}
}


長ったらしくなってすみません。
よろしくお願い致します。
ぼんじぃ
ベテラン
会議室デビュー日: 2004/05/21
投稿数: 70
投稿日時: 2004-06-09 22:04
あんまりアドバイスはできませんが下の方のエラーは
> java.lang.NullPointerException
> org.apache.jsp.flash_jsp._jspService(flash_jsp.java:101)
と出ているのでソースを見てみた方が早いと思います。
上の方はわかりません(爆

あと、実行環境やエラーの起きるときの条件などを書く方がいいです。
牙狼
会議室デビュー日: 2004/06/09
投稿数: 16
投稿日時: 2004-06-09 22:07
Tomcat4とMySQL4です。
はしもと
大ベテラン
会議室デビュー日: 2003/02/05
投稿数: 182
投稿日時: 2004-06-10 08:54
引用:
未記入さんの書き込み (2004-06-09 21:48) より:
java.lang.NullPointerException
org.apache.jsp.flash_jsp._jspService(flash_jsp.java:101)



スタック・トレースを知り、うまく利用して下さい。

workDir その他諸々が標準のままなら、
$CATALINA_BASE/work/Standalone/localhost/"コンテキスト名"/flash_jsp.java の
101 行で NullPointerException という意味です。

flash_jsp.java は、Tomcat が flash.jsp を java ソースに変換したものです。

101 行付近で原因を調べ、実際のファイル flash.jsp での対応するであろう
箇所を修正して下さい。
牙狼
会議室デビュー日: 2004/06/09
投稿数: 16
投稿日時: 2004-06-12 12:31
なんだかポート番号が間違っていました。
直したら問題なく動きました。
ぼんじぃ様、はしもと様、ありがとうございました。
1

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