로컬에서 할 땐 정말 쉽게 잘 됐는데 서버에 올릴땐 종나 안되서 삽질 이빠이 하고 내용 적어놓는다.


JSP 단독 톰캣 호스팅 하는 분들은 아래와 같이 하면 대충 다 맞을것이다.


서버 셋팅시 JNDI 설정방법 (CAFE24)


* 예제에 사용된 jdbc/mytc5의 mytc5 는 고객님 계정명과 같은 것으로 임의 변경하셔도 됩니다.

 

[server.xml]
tomcat/conf/server.xml에서 주석된 설정을 다음과 같이 변경합니다. (중요) 하단에 Context 태그 사이에 꼭 넣어야 작동함

<Resource name="jdbc/mytc5"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/dbname"
username="dbuser"
password="dbpasswd"
maxActive="20"
maxIdle="10"
maxWait="3000"/>

 

 

[web.xml]

WEB-INF/web.xml에서 다음을 추가합니다.

 

<resource-ref>
<res-ref-name>jdbc/mytc5</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

 

 

* Tomcat 호스팅의 tomcat 7 이용 시 추가사항

[context.xml]

tomcat/conf/context.xml에 <Context></Context> 사이에 다음을 추가합니다.

 

<ResourceLink type="javax.sql.DataSource"
                      name="jdbc/mytc5"
                      global="jdbc/mytc5j" />

 


[jdbctest.jsp]


<html>
<head>
<%@ page errorPage="errorpg.jsp" 
import="java.sql.*, 
javax.sql.*, 
java.io.*,
javax.naming.InitialContext,
javax.naming.Context" %>
</head>
<body>
<h1>JDBC JNDI Resource Test</h1>

<%
InitialContext initCtx = new InitialContext();
DataSource ds = (DataSource) initCtx.lookup("java:comp/env/jdbc/mytc5");
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery("select version();");
while (rset.next()) { 
out.println("mysql version=="+rset.getString("version()")); 
}
rset.close();
stmt.close();
conn.close();
initCtx.close();
%>
</body>
</html>

'자바 > 자바팁' 카테고리의 다른 글

java list 안전하게 제거  (0) 2017.02.10
java로 implode 구현하기  (1) 2015.02.28
[펌]Java 예제 - Queue(큐) Class  (0) 2014.12.01
레퍼런스까지 같이 복사하는 Clone 함수 사용법  (0) 2013.06.27
svn 관련 팁  (0) 2012.04.05

+ Recent posts