외부 액세스 Jboss 5에서 구성된 DataSource

3329 단어
본고는 Jboss 5에서 DataSource를 구성하여 MySQL 데이터베이스에 연결하고 Jboss 5 서버 외부(다른 JVM)에서 JNDI를 통해 이 DataSource에 접근하는 것을 설명한다.
(1) jboss-5.0.1 다운로드.GA, 그리고 디렉터리로 압축을 풀면 "${Jboss 루트}"로 디렉터리를 표시합니다.
(2) MySQL Connector를 다운로드하고 압축을 풀면 mysql-connector-java-5.1.22-bin.jar를 ${Jboss 루트 디렉터리}/server/default/lib로 복사합니다.
(3) MySQL을 시작하여 testDb를 만들고 testTable 테이블을 만듭니다.
+-----------------+
| name            |
+-----------------+
| testData        |
| anotherTestData |
+-----------------+

(4) ${Jboss 루트 디렉터리 복사}/jboss-5.0.1.GA/docs/examples/jca/mysql-ds.xml 파일을 ${Jboss 루트 디렉터리}/server/default/deploy 디렉터리에 저장하고 다음과 같이 수정합니다.
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>MySqlDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/testDb</connection-url>、
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>{ }</user-name>
<password>{ }</password>
<use-java-context>false</use-java-context>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>

특별히 주의하세요, mysql-ds.xml 파일에 다음과 같이 추가해야 합니다.    < use-java-context >false</ use-java-context >
DataSource , DataSource :
Exception in thread "main" javax.naming.NameNotFoundException: MySqlDS not bound


(5) Jboss를 시작하여 ${Jboss 루트 디렉터리}/bin 아래의run을 직접 실행합니다.sh하면 됩니다. 기본적으로default 모드를 시작합니다.방문http://localhost:8080/jmx-console/, 페이지의 "서비스JNDIVIEW"를 클릭하고 다음 페이지에서 list 표시줄의 Invoke 단추를 누르면 우리가 이미 설정한 MySqlDS를 볼 수 있습니다:
(6) 다음과 같은 테스트 클래스를 작성합니다.
public class MySqlTest
{
                                                     
    public static void main(String args[]) throws NamingException, SQLException
    {
        Hashtable<String, String> env = new Hashtable<String, String>();
        env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
        env.put(Context.PROVIDER_URL, "jnp://127.0.0.1:1099");
        env.put(Context.URL_PKG_PREFIXES, "org.jboss.namingrg.jnp.interfaces");
        Context ctx = new InitialContext(env);
                                                     
        Connection connection = ((DataSource) ctx.lookup("MySqlDS")).getConnection();
        ResultSet resultSet = connection.createStatement().executeQuery("SELECT * FROM testTable");
        while (resultSet.next())
        {
            String job_name = resultSet.getString("name");
            System.out.println(job_name);
        }
    }
}

실행할 때 다음 두 개의jar 파일을classpath에 추가해야 합니다.
.{Jboss 루트}/common/lib/jnpserver.jar
  • {Jboss 루트}/lib/jboss-logging-spi.jar

  • 본인의 방법은 {Jboss 루트 디렉터리}/common/lib와 {Jboss 루트 디렉터리}/lib를 모두classpath에 추가하는 것입니다.
    (7) 테스트 클래스를 실행하고 프로그램 출력은 다음과 같습니다.
    출력은 데이터베이스에 있는 데이터로 큰 성과를 거두었다.

    좋은 웹페이지 즐겨찾기