기본 콘텐츠로 건너뛰기

keytool 사용법

keytool.exe -genkey -alias juheon -keyalg RSA -keypass 1234qwer -storepass 1234qwer -keystore juheon.jks  keytool.exe -export -alias juheon -storepass 1234qwer -file juheon.cer -keystore juheon.jks  keytool.exe -importkeystore -srckeystore juheon.jks -destkeystore juheon.key.p12 -deststoretype PKCS12  D:\Java\32bit\jdk1.5.0_22\jre\lib\security\cacert  D:\Java\32bit\jdk1.5.0_22\bin\keytool.exe -import -alias tsasample -keystore  D:\Java\32bit\jdk1.5.0_22\jre\lib\security\cacert -file D:\workspace\Servers\tsa-server-web-config\tomcat.cer  keytool -import -alias somansa -keystore C:\Program Files\Java\jdk1.8.0_102\jre\lib\security\cacert -file c:\somansa.cer #인증서 생성  keytool -genkey -alias keyAlias -keyalg RSA -keypass changeit -storepass changeit –validity 9999 -keystore keystore.jks  keytool -export -alias keyAlias -storepass changeit -file server.cer -keystore keystore.jks  keytool -import -v -trustcacerts -alias keyAlias -file server.cer ...

Tomcat : JDBC JSP

JNDI를 이용하여 Database 연동을 해본다.


1. Oracle XE 설치

Oracel 11g XE를 다운받아 설치. Download URL 사용자 까지 생성.


2. Resource 등록

%CATALINA_HOME%\conf\server.xml 파일에 DB Resource를 GlobalNamingResources에 등록. 그래야 다른 context에서 참조해서 사용할 수 있다.

<GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
    <Resource name="portal.ds"
            auth="Container"
            type="javax.sql.DataSource"
            username="tomato"
            password="tomato01"
            driverClassName="oracle.jdbc.OracleDriver"
            url="jdbc:oracle:thin:@localhost:1521:xe"
            maxActive="8"
            maxIdle="4"/>    
</GlobalNamingResources>

등록한 Global Resource를 사용할 context에서 Link 추가. 이번에는 context 설정을 server.xml 파일에 직접 추가한다.

<Host name="localhost" appBase="webapps"  ... >
...
  <Context docBase="sample" path="/sample" reloadable="true">
    <ResourceLink global="portal.ds" name="db" type="javax.sql.DataSource" />
  </Context>
</Host>

위 설정까지 하고 나면 sample이라는 context에서는 "db"라는 JNDI 이름으로 DataSource를 사용 할 수 있다.


3. JNDI 사용

jsp 파일을 만들어서 JNDI를 사용하는 코드를 추가한다. Tomcat은 JNDI를 가져올때 Resource 명 앞에 "java:comp/env"를 붙여야 한다. 이는 WAS 밴더 별로 다르니 확인해야 한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
 import="java.sql.*, javax.naming.*, javax.sql.*" pageEncoding="UTF-8"%>
<%
 Context initCtx = new InitialContext();
 //datasource name
 DataSource ds = (DataSource) initCtx.lookup("java:comp/env/db");

 Connection conn = null;
 PreparedStatement pstmt = null;
 ResultSet rs = null;

 try {

  conn = ds.getConnection();

  pstmt = conn.prepareStatement("select * from user_master");

  rs = pstmt.executeQuery();

  ResultSetMetaData metadata = rs.getMetaData();

  int colcnt = metadata.getColumnCount();

  for (int i = 1; i < colcnt + 1; i++) {
   out.print(metadata.getColumnName(i) + ",");
  }

  out.print("<br>");

  while (rs.next()) {
   for (int i = 1; i < colcnt + 1; i++) {
    out.print(rs.getObject(metadata.getColumnName(i)) + ",");
   }

   out.print("<br>");
  }

 } catch (Exception e) {
  e.printStackTrace();
 } finally {
  if (conn != null) {
   try {
    conn.close();
   } catch (SQLException e1) {
    e1.printStackTrace();
   }
  }

  if (pstmt != null) {
   try {
    pstmt.close();
   } catch (SQLException e1) {
    e1.printStackTrace();
   }
  }

  if (rs != null) {
   try {
    rs.close();
   } catch (SQLException e1) {
    e1.printStackTrace();
   }
  }
 }
%>


4. DriverManager 사용

<%@ page language="java" contentType="text/html; charset=UTF-8"
 import="java.sql.*, javax.sql.*" pageEncoding="UTF-8"%>
<%
 Class.forName("oracle.jdbc.OracleDriver");

 String id = "tomato";
 String password = "tomato01";
 String url = "jdbc:oracle:thin:@localhost:1521:xe";

 Connection conn = null;
 PreparedStatement pstmt = null;
 ResultSet rs = null;

 try {

  conn = DriverManager.getConnection(url, id, password);

  pstmt = conn.prepareStatement("select * from user_master");

  rs = pstmt.executeQuery();

  ResultSetMetaData metadata = rs.getMetaData();

  int colcnt = metadata.getColumnCount();

  for (int i = 1; i < colcnt + 1; i++) {
   out.print(metadata.getColumnName(i) + ",");
  }

  out.print("<br>");

  while (rs.next()) {
   for (int i = 1; i < colcnt + 1; i++) {
    out.print(rs.getObject(metadata.getColumnName(i)) + ",");
   }

   out.print("<br>");
  }

 } catch (Exception e) {
  e.printStackTrace();
 } finally {
  if (conn != null) {
   try {
    conn.close();
   } catch (SQLException e1) {
    e1.printStackTrace();
   }
  }

  if (pstmt != null) {
   try {
    pstmt.close();
   } catch (SQLException e1) {
    e1.printStackTrace();
   }
  }

  if (rs != null) {
   try {
    rs.close();
   } catch (SQLException e1) {
    e1.printStackTrace();
   }
  }
 }
%>

댓글

이 블로그의 인기 게시물

Jeus was jsp 컴파일된 파일 경로

WAS 구동시 jsp 에러가 났을때 jsp가 컴파일된 파일을 확인하여 디버깅한다. jeus was jsp 컴파일된 파일 경로 %WAS_HOME%/WEBAPP/WEB-INF/.warjspwork/jeus_jspwork/ jsp 에러의 예) javax.servlet.ServletException: String index out of range: -13 at javax.servlet.http.HttpServlet.service(Unknown Source) at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java(Compiled Code)) at jeus.servlet.engine.RequestDispatcherImpl.processCommonRequestDispatcher(RequestDispatcherImpl.java(Compiled Code)) at jeus.servlet.engine.RequestDispatcherImpl.doForward(RequestDispatcherImpl.java(Compiled Code)) at jeus.servlet.engine.RequestDispatcherImpl.forward(RequestDispatcherImpl.java(Compiled Code)) at com.tomato.jef.servlet.BaseServlet.doDispatch(BaseServlet.java(Inlined Compiled Code)) at com.tomato.jef.bizframe.servlet.XecureHTMLMainServlet.doProcess(XecureHTMLMainServlet.java(Compiled Code)) at com.tomato.jef.bizframe.servlet.XecureHTMLMainServlet.doSessionProcess(Xec...

Vmware Fusion Window가 정상 종료가 되지 않을때

* 1번 방법   1. VMWare가 실행된 그 상태에서 Option키를 누르고 위에 메뉴바에서 Virtual Machine 메뉴를 클릭합니다.  2. 종료 메뉴가 Force 메뉴로 바뀌어 있습니다. Force shut down 이나 Force restart 합니다.  * 2번 방법   1. 유틸리티 - 활성 상태 보기로 들어가서 vmware 단어가 포함된 모든 프로세스를 강제종료 합니다.    2. 가상머신의 파일을 찾아갑니다. (eg. Documents/Virtual Machines/ 안에 있습니다.) 그리고 가상머신 파일의 오른쪽을 눌러 "패키지 내용 보기"로 들어갑니다.  3. ".vmem" 확장자로 된 모든 파일을 쓰레기통에 버리고 난 후 모두 비웁니다.  4. 다시 VMWare을 실행합니다. 어떤 오류가 나면 그냥 Disgard 하면됩니다.