#!/bin/sh


if [ $1 ]; then

    LOOP="$1"

else

    LOOP="5"

fi


echo "Sleep time is $LOOP sec."


while [ 1 ]; do

sh -c "ps aux | grep apache | wc -l ; netstat -an | grep :80 | grep ESTABLISHED | wc -l ; echo '----'"

sleep "$LOOP"

done


로컬 윈도우 환경에서는 잘 돌아가는 녀석이, 서버(리눅스) 에만 올리면 "There is no result map named" 에러가 발생한다. 

구글신에게 물어봐도 답을 찾지 못했다. 결국 금요일 퇴근도 못하고 삽질 3시간 후 해결 .... ㅠㅠ

AAAA-sqlmap.xml

<sqlMap namespace="_AAAA">


    ....


    <resultMap id="myMapId" class="XXXX">

    ....

    </resultMap>


    ....


</sqlMap>

 
BBBB-sqlmap.xml

<sqlMap namespace="_BBBB">


    ....


    <select id="list" resultMap="_AAAA.myMapId" parameterClass="XXXX">

    ....

    </select>


    ....


</sqlMap>


이렇게 사용해야 될 경우에는 sqlmap 파일의 로딩순서에 유의해야 한다.

sqlmap-config.xml 파일에 수동으로 기능별 sqlmap 파일을 선언해 줄 경우에는 아래와 같이 AAAA-sqlmap.xml을 먼저 선언해줘야 한다.

<sqlMapConfig> 

    ....

    <settings enhancementEnabled="true" useStatementNamespaces="true"/> 

    <sqlMap resource="com/foo/AAAA-sqlmap.xml" /> 

    <sqlMap resource="com/foo/BBBB-sqlmap.xml" /> 

    ....

</sqlMapConfig> 



만약 스프링과 연동하여 sqlmap 파일을 자동으로 로딩해서 사용하고 있을 경우에는 아래와 같이 해주도록 한다.

<bean id="sqlMapClient"

    class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">

    ....

    <property name="mappingLocations">

        <list>

            <value>classpath*:/com/foo/AAAA-sqlmap.xml</value>

            <value>classpath*:/com/foo/BBBB-sqlmap.xml</value>

            <value>classpath*:/com/others/**/*-sqlmap.xml</value>

        </list>

    </property>

    ....

</bean>




Which JDBC drivers support which versions of Oracle Database?
  • JDBC 9.0.1 drivers can talk to RDBMS
    • 11.1.0
    • 10.2.0
    • 10.1.0
    • 9.2.0
    • 9.0.1
    • 8.1.7
    • 8.1.6
    • 8.1.5
    • 8.0.6
    • 8.0.5
    • 8.0.4
    • 7.3.4
  • JDBC 9.2.0 drivers can talk to RDBMS
    • 11.2.0
    • 11.1.0
    • 10.2.0
    • 10.1.0
    • 9.2.0
    • 9.0.1
    • 8.1.7
  • JDBC 10.1.0 drivers can talk to RDBMS
    • 11.2.0
    • 11.1.0
    • 10.2.0
    • 10.1.0
    • 9.2.0
    • 9.0.1
    • 8.1.7
  • JDBC 10.2.0 drivers can talk to RDBMS
    • 11.2.0
    • 11.1.0
    • 10.2.0
    • 10.1.0
    • 9.2.0
    • 9.0.1
    • 8.1.7
  • JDBC 11.1.0 drivers can talk to RDBMS
    • 11.2.0
    • 11.1.0
    • 10.2.0
    • 10.1.0
    • 9.2.0
    • 9.0.1
  • JDBC 11.2.0 drivers can talk to RDBMS

아래의 코드에 따라 ....

@RequestMapping(value="/club/{seq}")

public String clubFrame(@PathVariable("seq") Integer seq) {

    return "/club/ER_index";

}

 
주소창에 /club/3 을 입력하면 NoSuchRequestHandlingMethodException 예외가 발생하는 경우가 있다.

참고로 web.xml에는  

<servlet-mapping>

    <servlet-name>dispatcher</servlet-name>

    <url-pattern>*.do</url-pattern>

</servlet-mapping>

<servlet-mapping>

    <servlet-name>dispatcher</servlet-name>

    <url-pattern>/club/*</url-pattern>

</servlet-mapping>

 와 같이 설정되어 있다.

해결책은 아래와 같다.

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

    <property name="alwaysUseFullPath" value="true" />

    ....

</bean>

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">

    <property name="alwaysUseFullPath" value="true" />

    ....

</bean>

 
톰캣 설정
context-1.xml
<Context crossContext="true" .... 생략

context-2.xml 
<Context crossContext="true" .... 생략

테스트
context-1.jsp 

<%

    ServletContext ctx = application.getContext("/context-1");

    Integer counter = (Integer)ctx.getAttribute("counter");

    if (counter == null) {

        counter = 0;

    }

    counter++;

    

    request.setAttribute("counter", counter);

    ctx.setAttribute("counter", counter);

%>


<h1>Context-1</h1>

<h1>현재 카운터는 ${counter}입니다.</h1>


context-2.jsp

<%

    ServletContext ctx = application.getContext("/context-1");

    Integer counter = (Integer)ctx.getAttribute("counter");

    if (counter == null) {

        counter = 0;

    }

    counter++;

    

    request.setAttribute("counter", counter);

    ctx.setAttribute("counter", counter);

%>


<h1>Context-1</h1>

<h1>현재 카운터는 ${counter}입니다.</h1>


출처 : http://jee-bpel-soa.blogspot.com/2009/06/session-sharing-in-apache-tomcat.html
 

 
클라이언트
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): (일단 아무것도 입력하지 않음)
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
64:09:73:19:9e:ac:a0:f7:aa:c3:08:f9:0e:5a:fe:61 user@hostname

위 클라이언트 서버에서 생성한 id_rsa.pub 파일의 내용을 복사 후 원격지 서버에 authorized_keys 파일명을 저장한다.

서버
$ vi authorized_keys
클라이언트의 id_rsa.pub 파일의 내용 복사 후 저장
$ chmod 644 authorized_keys
$ chmod 755 ../.ssh


클라이언트에서 서버로 접속해본다.
$ ssh user@remote_server


파이어폭스에서 jQuery 기반의 웹 어플리케이션 개발 시 아래 환경에서 발생하는 에러이다.

파이어폭스 플러그인으로 FirebugAdblock plus를 설치한 경우 발생

원인은 Adblock plus에서 필터링되는 특정 구문을 사용하거나 경로를 호출했기 때문이다.

localhost에서 개발중이라면 아래와 같은 예외규칙을 Adblock plus에 추가하자.


파이어폭스에서 원인을 알 수 없는 스크립트 오류가 발생할 경우, IE 등의 타 브라우저에서는 정상 작동한다면 90% 이상이 파이어폭스 플러그인 문제일 가능성이 농후하다.

덕분에 오늘도 삽질했다.



1. 시스템 환경변수 설정
export NLS_LANG='KOREAN_KOREA.AL32UTF8'


2. Oracle DB에 sys 계정으로 접속

-- 현재 설정 조회
select * from nls_database_parameters;

-- 캐릭터셋 업데이트
update sys.props$ set value$='AL32UTF8' where name='NLS_CHARACTERSET';

update sys.props$ set value$='AL32UTF8' where name='NLS_NCHAR_CHARACTERSET';

update sys.props$ set value$='KOREAN_KOREA.AL32UTF8' where name='NLS_LANGUAGE';

-- DB 캐릭터셋 반영
sql> startup mount;
sql> alter system enable restricted session;
sql> alter system set job_queue_process=0;
sql> alter system set aq_tm_processes=0;
sql> alter database open;
sql> alter database character set AL32UTF8;
sql> shutdown immediate;
sql> startup;

모르면 장시간 삽질을 유발하지만 원인을 알면 해결은 초간단한다.

원인
Toad 설치경로에 특수문자가 포함된 경우 발생한다.

해결법
다른 경로에 재설치

+ Recent posts