tomcat 5.5 JNDI 설정
4083 단어 자바sqltomcatjdbcSQL Server
1)드라이버 가 server 에 놓 인 위치.
2)설정
드라이버 는${TOMCAT 에 두 어야 합 니 다.HOME}\common\lib 에${TOMCAT 를 넣 은 적 이 있 습 니 다.HOME}\\server\lib 및${TOMCATHOME}\shared\lib 가 지나 쳐 서 실행 할 수 없습니다.
설정 파일 에 JNDI 를 추가 하 는 방법 은 여러 가지 가 있 지만,아래 와 같은 방식 은 비교적 통용 된다.
${TOMCAT_HOME}\conf\context.xml 의 설정 은 다음 과 같 습 니 다.
<Context>
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
<Resource name="jdbc/test"
type="javax.sql.DataSource"
password=""
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="50"
username="root"
url="jdbc:mysql://localhost:3306/mynews"
maxActive="100"/>
</Context>
테스트 프로그램 호출 시 다음 과 같 습 니 다:
<%@page import="java.util.*,javax.naming.*,java.sql.*,javax.sql.*"%>
<%@page contentType="text/html;charset=utf-8"%>
<%
Context ctx = new InitialContext();
String jndiLookUp = "java:comp/env/jdbc/test";
DataSource ds =(DataSource) ctx.lookup(jndiLookUp);
Connection con = ds.getConnection();
ResultSet rs =null;
Statement stmt =null;
try{
stmt =con.createStatement();
rs = stmt.executeQuery("select * from XXX");
while(rs.next())
{
System.out.println(rs.getString(1));
}
}catch(Exception e)
{
e.printStackTrace();
}finally{
if(rs!=null)
rs.close();
if(stmt!=null)
stmt.close();
if(con!=null)
con.close();
}
%>
jndi 호출 에 사용 되 는 것 은"java:comp/env/jdbc/test"입 니 다.
프로그램의 웹 xml 에 다음 과 같은 정의 가 있 습 니 다:
<resource-ref>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
java:comp/env 는 구성 요소 의 JNDI 컨 텍스트 이름 입 니 다.
(실제로 이 문맥 도 하나의 자원 으로 처리 되 었 습 니 다.자원 을 찾 는 과정 은 이 럴 수 있 습 니 다.
jndictxt=ctxt.lookup("java:comp/env")그리고 이 jndictxt 로 자원 을 찾 습 니 다.
ref = jndictxt.lookup("jdbc/test")。)
jdbc/test 는 자원 이 인용 한 JNDI 이름(The jdbc/test string is the JNDI name for the resource reference)입 니 다.이 말 은 자원 인용 도 실제 자원 과 마찬가지 로 JNDI 바 인 딩 대상 으로 처리 되 었 음 을 의미 할 수 있 습 니 다.그러나 실제 적 으로 는 그렇지 않 을 것 입 니 다.배치 설명자 에서 인용 명 요소 이기 때 문 입 니 다.번역자 도 고수 가 아니 기 때문에 이곳 의 구체 적 인 실현 세부 사항 은 독자 스스로 연구 해 야 한다.)그래서 JDBC 의 DataSource 대상 의 JNDI 명 은 자바:cop/env/jdbc 의 문맥 서브 대상 에 저장 된다.(구성 요소 실행 환경의 상하 문 차원 은 좀 더 알 아야 한다)
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public static DataSource getDataSource(String dataSourceName){
Context initCtx;
try {
initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
return (DataSource)envCtx.lookup(dataSourceName);
} catch (NamingException e) {
e.printStackTrace();
}
return null;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.