SQL クエリを実行する JSP ページを作成しました。ページを更新するたびに、新しいアクティブ セッションが作成されます。これにより、最大アクティブ セッションに達すると、データベース接続が失われ、次のエラーが表示されます。
java.sql.SQLException: リスナーが次のエラーで接続を拒否しました: ORA-12519、TNS: 適切なサービス ハンドラが見つかりません
このセッションの増加を止める方法。
jsp ページ:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import="dao.Dao" %>
<%@ page import="model.Chat_model" %>
<%@ page import="java.util.*" %>
<%@ page import="model.Register_model" %>
<!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>
<table>
<%
Dao object=new Dao();
ArrayList<Chat_model> a=new ArrayList<Chat_model>();
String email1=(String)session.getAttribute("email1");
a=object.selectChat(email1, ((Register_model)(session.getAttribute("user"))).getEmail());
String name1=(String)session.getAttribute("name1");
String email2=((Register_model)(session.getAttribute("user"))).getEmail();
String name2=((Register_model)(session.getAttribute("user"))).getName();
for(Chat_model k:a)
{
if(email1.equals(k.getEmail1()))
{
out.println("<tr><td><b><u>"+name1+"</u>:</b></td><td>"+k.getChat()+"</td> </tr>");
}
else
{
out.println("<tr><td><b><u>"+name2+"</u>:</b></td><td>"+k.getChat()+"</td><tr>");
}
}
%>
</table>
<form action="../Controller" method="post">
<textarea name="chatbox" rows="4" cols="50"></textarea>
<input type="hidden" name="action" value="chatsend"></input>
<input type="submit" value="Send"></input>
</form>
</body>
</html>
データベース トランザクション メソッド:
public ArrayList<Chat_model> selectChat(String s1,String s2)
{
DatabaseConnection db=new DatabaseConnection();
Connection conn=db.getConnection1();
Statement stmt = null;
String email1 = null;
String chat=null;
ArrayList<Chat_model> a=new ArrayList<Chat_model>();
try
{
stmt = conn.createStatement();
String sql = "SELECT email1,chat FROM chat_all where email1="+"'"+s1+"' AND email2="+"'"+s2+"' OR email1="+"'"+s2+"' AND email2="+"'"+s1+"' order by tm_stamp";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
Chat_model object=new Chat_model();
email1=rs.getString("email1");
chat=rs.getString("chat");
object.setEmail1(email1);
object.setChat(chat);
a.add(object);
}
}
catch(Exception e)
{
e.getStackTrace();
}
return a;
}
データベース接続クラス:
public class DatabaseConnection {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@siddhartha-PC:1521:xe";
String username = "system";
String password = "password";
Connection conn = null;
public Connection getConnection1(){
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn = DriverManager.getConnection(url,username,password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public boolean closeConnection(Connection conn){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
}