기술지원 문의

Re:Re:DBConnection 문제
김봉기 / 2003-02-12 00:00

관리자님의 글 정말 고맙습니다.

죄송한데 다시 질문 드릴께요.
질문드렸던 문제는 http://www.caucho.com/resin/ref/db-config.xtp 에서 해결했습니다. 

그런데 문제는 실행을 했는데.. 다음과 같이 에러가 납니다.
환경변수에 Classpath문젠가요. 아마도 jdbc 연결이 안되는것 같은데..

classpath는 다음과 같이 설정 했습니다.
.;C:\\j2sdk1.4.1\\lib\\tools.jar;C:\\j2sdk1.4.1\\lib\\jvm.lib;C:\esin2.1.6\\lib\\;c:\\Program Files\\Microsoft SQL Server 2000 Driver for JDBC\\lib\\msbase.jar;c:\\Program Files\\Microsoft SQL Server 2000 Driver for JDBC\\lib\\msutil.jar;c:\\Program Files\\Microsoft SQL Server 2000 Driver for JDBC\\lib\\mssqlserver.jar;

ㅜ.ㅜ 지송해여 정신없게 해드려서 에러 나서 있는 페스 다 적어 줬습니다. 다시한번 답변 부탁 드립니다. (.. )~ 꾸벅
500 Servlet Exception

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unable
to connect.  Invalid URL.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at com.caucho.sql.XADataSourceAdapter.getXAConnection(XADataSourceAdapter.java:119)
at com.caucho.sql.XADataSourceAdapter.getPooledConnection(XADataSourceAdapter.java:141)
at com.caucho.sql.DBPool.createConnection(DBPool.java:1391)
at com.caucho.sql.DBPool.getPooledConnection(DBPool.java:1326)
at com.caucho.sql.DBPool.getConnection(DBPool.java:1196)
at com.caucho.sql.DBPool.getConnection(DBPool.java:1173)
at test.Qna.user_input(Qna.java:56)
at test.Qna.doPost(Qna.java:36)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:96)
at com.caucho.server.http.Invocation.service(Invocation.java:312)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:342)
at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:272)
at com.caucho.server.TcpConnection.run(TcpConnection.java:137)
at java.lang.Thread.run(Thread.java:536)


--------------------------------------------------------
--관리자 님의 글 [2003-02-12 14:59:11]
>Resin에서는 mysql의 경우
Resin.conf혹은 web.xml에


 jdbc/test
 javax.sql.DataSource
 
 
 
 
 
 

로 설정하신 후에

소스에서는
--------------------------
<%@ page language=java %>
<%@ page import=java.sql.* %>
<%@ page import=javax.sql.* %>
<%@ page import=javax.naming.* %>

<%
Context env = (Context) new InitialContext().lookup(\"java:comp/env\");
DataSource source = (DataSource) env.lookup(\"jdbc/test_db\");

Connection conn = source.getConnection();
try {
  Statement stmt = conn.createStatement();

  String name = request.getParameter(\"name\");
  String color = request.getParameter(\"color\");

  stmt.executeUpdate(
    \"insert into COLORS values (\" +
    \"\" + name + \", \" + color + \")\"
  );
} finally {
  conn.close();
}

%>

Thank you, <%= name %>


-------------------------------------------
이런식으로 불러 사용하시면됩니다.

아래의 글을 보니 설정은 해놓으신 것 같은데
프로그램은 자체적인 Pool을 생성해서
이용하는 것 같네요.




--김봉기 님의 글 [2003-02-11 17:07:01]
>지금 까지 게시판에 올라와 있는 DBConnection Pool다루는 것에 대해 봤습니다. 그런데 아무리 해도 안되는 부분이 있어서 글올립니다.

개발 환경: IIS + resin2.1.6 + mssql 2000server + j2sdk1.4.1
1. JSP에선 바로 DB 접속이 됩니다. 
2. 서블릿 매핑까지 됩니다.
--------------- JSP 예문 ------------------------------------
<%@ page import=\"java.sql.*\"%>
<%@ page import=\"java.util.*\"%>
<%@ page contentType=\"text/html; charset=EUC-KR\"%>

테스트입니다.

<%
String id;
String name;
int count;
    try{
Class.forName (\"com.microsoft.jdbc.sqlserver.SQLServerDriver\");
Connection conn =
DriverManager.getConnection
(\"jdbc:microsoft:sqlserver://xxx.xxx.xx.xxx:1433\",\"sa\",\"xxx\");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(\"select id, name from test.dbo.cust;\");

rs.next();
out.println(\"아이디: \" + rs.getString(\"id\")+\", 이름: \"+rs.getString(\"name\"));

stmt.close();
conn.close();
}
catch(SQLException es)
{
System.out.println(\"데이터를 가져오지 못했습니다. \");
System.out.println(es.getMessage());
}
%>



3. DBConnection이용 부분   
--------------------------------------  

  jdbc/mssql
  javax.sql.DataSource
  
  
  
  
  
  

----------------------------------------------------------
tomcat에선 ConnectionPool 객체를 만들어 줘서 그것을 web.xml에서 context-param으로 갖다 섰는데 resin에서 어떻게 하는지 정말 모르겠습니다. 몇칠째 헤매다가 용기내서 질문 드립니다. 답변 꼭 부탁드립니다. 

>>사용방법과 tomcat 처럼 class객체를 만들어 사용할수 있는
지..  답변 기다리겠습니다. 감사 합니다. ㅜ.ㅜ            

Re:Re:Re:DBConnection 문제
관리자 / 2003-02-13 00:00

안녕하세요.

에러메세지는 DataSource를 찾지못하는 것 같습니다.
김봉기님이 resin.conf에 설정하신 mssql의 pool에 따라
김봉기님께서 테스트하시는 소스가
아래처럼 되어있나요?

------------------------------------------------
<%@ page language=java %>
<%@ page import=java.sql.* %>
<%@ page import=javax.sql.* %>
<%@ page import=javax.naming.* %>

<%
Context env = (Context) new InitialContext().lookup(\"java:comp/env\");
DataSource source = (DataSource) env.lookup(\"jdbc/test\");

Connection conn = source.getConnection();
try {
  Statement stmt = conn.createStatement();
  ResultSet rs = stmt.executeQuery(\"SQL문장\");
  .........
  ........
}
} finally {
  conn.close();
}
------------------------------------------------


--김봉기 님의 글 [2003-02-12 15:56:23]
>관리자님의 글 정말 고맙습니다.

죄송한데 다시 질문 드릴께요.
질문드렸던 문제는 http://www.caucho.com/resin/ref/db-config.xtp 에서 해결했습니다. 

그런데 문제는 실행을 했는데.. 다음과 같이 에러가 납니다.
환경변수에 Classpath문젠가요. 아마도 jdbc 연결이 안되는것 같은데..

classpath는 다음과 같이 설정 했습니다.
.;C:\\j2sdk1.4.1\\lib\\tools.jar;C:\\j2sdk1.4.1\\lib\\jvm.lib;C:\esin2.1.6\\lib\\;c:\\Program Files\\Microsoft SQL Server 2000 Driver for JDBC\\lib\\msbase.jar;c:\\Program Files\\Microsoft SQL Server 2000 Driver for JDBC\\lib\\msutil.jar;c:\\Program Files\\Microsoft SQL Server 2000 Driver for JDBC\\lib\\mssqlserver.jar;

ㅜ.ㅜ 지송해여 정신없게 해드려서 에러 나서 있는 페스 다 적어 줬습니다. 다시한번 답변 부탁 드립니다. (.. )~ 꾸벅
500 Servlet Exception

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unable
to connect.  Invalid URL.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at com.caucho.sql.XADataSourceAdapter.getXAConnection(XADataSourceAdapter.java:119)
at com.caucho.sql.XADataSourceAdapter.getPooledConnection(XADataSourceAdapter.java:141)
at com.caucho.sql.DBPool.createConnection(DBPool.java:1391)
at com.caucho.sql.DBPool.getPooledConnection(DBPool.java:1326)
at com.caucho.sql.DBPool.getConnection(DBPool.java:1196)
at com.caucho.sql.DBPool.getConnection(DBPool.java:1173)
at test.Qna.user_input(Qna.java:56)
at test.Qna.doPost(Qna.java:36)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:96)
at com.caucho.server.http.Invocation.service(Invocation.java:312)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:342)
at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:272)
at com.caucho.server.TcpConnection.run(TcpConnection.java:137)
at java.lang.Thread.run(Thread.java:536)


--------------------------------------------------------
--관리자 님의 글 [2003-02-12 14:59:11]
>Resin에서는 mysql의 경우
Resin.conf혹은 web.xml에


 jdbc/test
 javax.sql.DataSource
 
 
 
 
 
 

로 설정하신 후에

소스에서는
--------------------------
<%@ page language=java %>
<%@ page import=java.sql.* %>
<%@ page import=javax.sql.* %>
<%@ page import=javax.naming.* %>

<%
Context env = (Context) new InitialContext().lookup(\"java:comp/env\");
DataSource source = (DataSource) env.lookup(\"jdbc/test_db\");

Connection conn = source.getConnection();
try {
  Statement stmt = conn.createStatement();

  String name = request.getParameter(\"name\");
  String color = request.getParameter(\"color\");

  stmt.executeUpdate(
    \"insert into COLORS values (\" +
    \"\" + name + \", \" + color + \")\"
  );
} finally {
  conn.close();
}

%>

Thank you, <%= name %>


-------------------------------------------
이런식으로 불러 사용하시면됩니다.

아래의 글을 보니 설정은 해놓으신 것 같은데
프로그램은 자체적인 Pool을 생성해서
이용하는 것 같네요.




--김봉기 님의 글 [2003-02-11 17:07:01]
>지금 까지 게시판에 올라와 있는 DBConnection Pool다루는 것에 대해 봤습니다. 그런데 아무리 해도 안되는 부분이 있어서 글올립니다.

개발 환경: IIS + resin2.1.6 + mssql 2000server + j2sdk1.4.1
1. JSP에선 바로 DB 접속이 됩니다. 
2. 서블릿 매핑까지 됩니다.
--------------- JSP 예문 ------------------------------------
<%@ page import=\"java.sql.*\"%>
<%@ page import=\"java.util.*\"%>
<%@ page contentType=\"text/html; charset=EUC-KR\"%>

테스트입니다.

<%
String id;
String name;
int count;
    try{
Class.forName (\"com.microsoft.jdbc.sqlserver.SQLServerDriver\");
Connection conn =
DriverManager.getConnection
(\"jdbc:microsoft:sqlserver://xxx.xxx.xx.xxx:1433\",\"sa\",\"xxx\");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(\"select id, name from test.dbo.cust;\");

rs.next();
out.println(\"아이디: \" + rs.getString(\"id\")+\", 이름: \"+rs.getString(\"name\"));

stmt.close();
conn.close();
}
catch(SQLException es)
{
System.out.println(\"데이터를 가져오지 못했습니다. \");
System.out.println(es.getMessage());
}
%>



3. DBConnection이용 부분   
--------------------------------------  

  jdbc/mssql
  javax.sql.DataSource
  
  
  
  
  
  

----------------------------------------------------------
tomcat에선 ConnectionPool 객체를 만들어 줘서 그것을 web.xml에서 context-param으로 갖다 섰는데 resin에서 어떻게 하는지 정말 모르겠습니다. 몇칠째 헤매다가 용기내서 질문 드립니다. 답변 꼭 부탁드립니다. 

>>사용방법과 tomcat 처럼 class객체를 만들어 사용할수 있는
지..  답변 기다리겠습니다. 감사 합니다. ㅜ.ㅜ