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