2009-11-09 2 views
0

SQL 서버 데이터베이스에 Java 코드를 연결하는 데 문제가 있습니다. 나는 애플 리케이션 서버에서 잘 연결할 수 있습니다.하지만 지금은 그림 밖으로 애플 리케이션 서버와 연결하려고하고 일부 env 속성과 함께 InitialContext를 사용하려고합니다. 그래서 SQL 서버에 연결하는 독립 실행 형 Java 클래스 InitialContextSQL 서버에 연결하기위한 initialcontext 생성 방법

내 프로젝트 라이브러리에는 mssqlserver.jar가 있습니다. 다른 항아리도 필요합니까?

나는 몇 가지 코드 샘플을 위해 주위를 둘러 보았다하지만 난 속성을 다음 한 응용 프로그램 서버에 Context.INITIAL_CONTEXT_FACTORY

Hashtable env = new Hashtable(); 
env.put(Context.INITIAL_CONTEXT_FACTORY, "what do i put here?"); 
env.put("java.naming.factory.initial", 
"what do i put here?"); 
... 
what other properties would I need? 

에 넣어 무엇을 잘 모릅니다.

datasourceName = mydb 
user = myuser 
port = 1433 
password = mypwd 
databaseName = mydb 
servername = localhost 
+0

어떤 앱 서버를 사용하고 있습니까? 연결 풀을 사용하고 있습니까? – Asaph

+0

Sun 응용 프로그램 서버 그러나 필자가 작성한이 코드는 서버에서 실행되지 않습니다. 그 컨테이너의 외부에있는 독립 실행 형 자바 클래스 – Drake

답변

1

여기 제대로 된 경로에 있지 않습니다. InitialContext는 응용 프로그램 서버에 대한 것입니다. 응용 프로그램 서버없이 데이터베이스에 직접 연결하려면 데이터베이스에 대한 자체 JDBC 연결을 작성하거나 다른 JDBC 연결 풀 구현을 사용해야합니다.

+0

나는 이것이 일어날 것임을 알았다. 나는 질문에 그것을 제공해야한다 :). 나는 앱 서버 밖에서 쿼리를 실행할 코드를 작성 중이다. 그래서 initialcontext를 사용하여 연결하고 싶습니다 ... 가능하지 않다면 ... JDBC를 고수하겠습니까? – Drake

+0

@Drake, 당신은 JDBC를 고수해야합니다. 물론 이론적으로는 응용 프로그램 서버에 원격으로 연결할 수 있지만 응용 프로그램 서버는 일반적으로 좋은 이유로 데이터 원본을 원격으로 제공하지 않습니다. 휠을 재발 명하고 자신의 JNDI 구현을 할 수도 있지만, 이는 커버 아래에서 JDBC를 수행 할 것이므로, 왜 귀찮은가? – Yishai

+0

JDBC에 연결할 경우 Class.forName ("")에 넣을 것입니다. 필자는 mssqlserver.jar을 사용하고 있습니다. – Drake

0

우선, DriverManager#getConnection()을 사용해보세요. (간단한) 클라이언트 애플리케이션에서 JNDI를 구현하고 사용하는 것은 상대적으로 작은 장점으로는 너무 많은 노력입니다.

일반 응용 프로그램 서버는 자체 JNDI 구현과 함께 제공되므로 자신을 생성/정의/구성하는 것에 대해 전혀 염려 할 필요가 없습니다.

클라이언트 응용 프로그램에서 JNDI를 사용하려면 here을 시작하십시오. 그것으로 많은 행운을 빕니다.

0

JDBC tutorial을 참조하면 도움이되는 것을 알 수 있습니다. DriverManager를 사용하여 연결을 확인할 수 있습니다. 익숙한 JNDI 접근 방식은 AppServer 환경에서 제공되는 모든 유형의 서비스에 대한 액세스를 제공하기위한 훌륭하고 일반적인 추상화입니다. 독립 실행 형 응용 프로그램의 경우 일반적으로 원시 API 만 사용합니다.

+0

ok ... JNDI입니다. – Drake