Servers 에서 설정한 톰켓서버 더블클릭 하고...
Server modules without publishing 체크한 위에 보면...
Open launch configuration 이라고 있는데... 클릭해서 창을 띄운 후
Classpath 탭에 Bootstrap Entries 에서 Add External JARs... 로
톰캣 디렉토리 lib 폴더에 있는 servlet-api.jar 를 추가 하니까...
해결(?) 되네요...
javax.servlet.Filter 를 찾는것이니...
일단 위의 에러는 나지 않습니다...

 

 

FLEX는 encoding을 'utf-8'을 사용하고, JSP는 encoding을 'euc-kr'을 사용합니다. 그런데 tomcat을 encoding 방식을 한가지로 제공합니다. 이것때문에 2가지 이상의 Encoding방식이 필요한 경우 문제가 발생합니다. 즉, service.xml을 아래와 같은 방식으로 작성할 경우 FLEX에서 JSP로 정보가 넘어갈 때 한글은 깨어지게됩니다.

 <Connector  ...... URIEncoding="euc-kr" />

 

이럴 경우 각 페이지마다 필요한 encoding방식을 지정해야합니다.

 

즉, FLEX에서 JSP로 정보가 넘어올 경우만 "utf-8", 그 외는 "euc-kr"로 말입니다.

 

이렇게 할려면

 

1. service.xml에 URIEncoding="euc-kr"은 없애고 useBodyEncodingForURI="true"을 추가한다.

 <Connecter .... useBodyEncodingForURI="true">

 

2. 각 JSP에 request.setCharacterEncoding()을 필요한 encoding방식을 설정합니다.

 utf-8이 필요할 경우는 request.setCharacterEncoding("utf-8")로

 euc-kr이 필요할 경우는 request.setCharacterEncoding("euc-kr")로합니다.

 

참고로 tomcat version은 5.5.12입니다.



Tomcat으로 웹 어플리케이션을 돌릴 때 디렉토리를 URL로 지정하면 그냥 디렉토리 목록이 보인다.
보안상 매우 안 좋다.

$CATALINA_HOME/conf/web.xml 에 보면 (각 웹 컨텍스트의 web.xml이 아니다.)

    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.DefaultServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>



listings 파라미터를 false로 하면 그 이후부터 디렉토리를 URL로 주면 오류 메시지가 뜬다.
음 .. 여러군데서 막힌다 ^^ Tomcat 5 설정및 자바 커넥션 연구 .

대부분의 어플리캐이션에서 가장 부하가 많이 걸리는 부분은 DB 에 접속 하는 부분이라고 합니다. 그에따라 대부분의 상용 사이트 혹은 동시접속자가 생기는 솔루션의 경우에는 DataBase Pool 이라는 기법을 이용하여 Connection 되어있는 객체를 생성하고, 요구사항이 있을때 임대해 주는 방식을 많이 사용합니다. 이 부분을 직접 작성해 보는것 또한 많은 것을 학습할 수 있는 기회가 되지만, 실제 서비스되는 곳에 실험적으로 만들어진 코드를 사용하기는 현실적으로 많이 어려운것 같습니다.

따라서 apache 재단의 Java 서브 프로젝트인 jakarta 에서 DBCP 라는 프레임워크(?) 많이들 이용하고 있습니다. 물론, 학습시에 말이죠. :-)


자바를 배워 나아간다는것은, 영업직들의 화려한 활약으로 인해서 EJB 가 필수적인 스킬이 되어 가고 있는 상황이고 EJB 라는 녀석 자체가 초기 투자비용이 워낙 큰 녀석이다보니 WAS 에서 학습시에 세팅에 열을 올리는 대부분의 것들을 자체적으로 지원해 주기 마련입니다. 그래서 DBCP(DB Connection Pool) 에 대한 전반적인 지식이 없이 EJB 로 넘어가는 사례를 많이 보곤 합니다. 하지만 제가 항상 강조하듯이 지식을 끌어안지 못하고 과정을 학습하는것은, 차후에 그것을 기반으로 한 상위의 무언가를 배울때 걸림돌이 될 것이 확실하다고 생각합니다.

그래서 결론은, 'DBCP 에 대한 전반적인 지식을 끌어안고 상위로 나아가자' 가 되겠죠. :-)


항상 포스팅을 할 때마다 느끼는것이지만, 사설이 너무 길어지는거 같습니다.

1> 라이브러리 복사.
2> server.xml ==> <Resource /> 추가
3> context.xml 혹은 server.xml ==> <ResourceLink /> 추가
4> web.xml ==> <resource-ref> ... </resource-ref> 추가
5> TEST!!


1-1> DBCP 라이브러리 복사.
common-collections-3.2.jar
common-dbcp-1.2.1.jar
common-pool-1.3

위의 3개 파일을 <context>/WEB-INF/lib 디렉토리에 복사.


1-2> oracle JDBC 드라이버 파일 복사.
ojdbc14.jar
위 파일을 <context>/WEB-INF/lib 디렉토리에 복사.
[<TOMCAT_HOME>/common/lib 디렉토리에 복사]


2> server.xml 파일의 <GlobalNamingResources> 의 내부태그로 <Resource /> 추가

<Resource auth="Container" driverClassName="oracle.jdbc.driver.OracleDriver" maxActive="20" maxIdle="10" maxWait="-1" name="jdbc/project" password="tiger" type="javax.sql.DataSource" url="jdbc:oracle:thin:@127.0.0.1:1521:xe" username="scott" />


3> context.xml 혹은 server.xml 파일의 <Context> 의 내부태그로 <ResourceLink /> 추가

<ResourceLink global="jdbc/project" name="jdbc/project" type="javax.sql.DataSource" />


4> web.xml 파일에 <resource-ref> 추가.

 <resource-ref>
  <description>DB Connection</description>
  <res-ref-name>jdbc/project</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
 </resource-ref>


5> TEST!!

<%@ page contentType="text/html" pageEncoding="UTF-8"
         import="java.sql.*"
         import="javax.sql.*"
         import="javax.naming.*"
%>
<html>
<head>
 <title></title>
</head>


<body>
<%
  try {
   Context initCtx = new InitialContext();
   Context envCtx = (Context)initCtx.lookup("java:/comp/env");
   DataSource ds = (DataSource)envCtx.lookup("jdbc/project");

   Connection conn = ds.getConnection();
   out.write("DB Connection..");
 
   conn.close();
  }
  catch(Exception e) {
   e.printStackTrace();
  }
%>
</body>

</html>

퍼온곳 http://blog.rooine.com/trackback/8 입니다.
TomCat5
Context  설정 MS - SQL - 2005
------------------------------------------------------------------------------
<?xml version='1.0' encoding='utf-8'?>
<Context crossContext="true" debug="5" docBase="사용자" path="/사용자" reloadable="true">
  <Logger className="org.apache.catalina.logger.FileLogger" prefix="사용자log." suffix=".txt" timestamp="true"/>
  <Resource auth="Container" name="umsdb" type="javax.sql.DataSource"/>
  <Resource auth="Container" description="사용자명 Conntion Pool" name="Catalina/localhost/사용자위치" type="javax.sql.DataSourcee"/>
  <ResourceParams name="umsdb">
    <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>
    <parameter>
      <name>maxActive</name>
      <value>100</value>
    </parameter>
    <parameter>
      <name>maxWait</name>
      <value>10000</value>
    </parameter>
    <parameter>
      <name>password</name>
      <value>패스워드</value>
    </parameter>
    <parameter>
      <name>url</name>
      <value>jdbc:sqlserver://아이피:포트;DatabaseName=DB명</value>
    </parameter>
    <parameter>
      <name>driverClassName</name>
      <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
    </parameter>
    <parameter>
      <name>maxIdle</name>
      <value>30</value>
    </parameter>
    <parameter>
      <name>username</name>
      <value>아이디</value>
    </parameter>
  </ResourceParams>
</Context>

위에 2부분이 병경되었다.
jar 파일은 열어보면 해드오류 난다 머리가없는것이다.