DB SID, Service Name 차이별로 URL 입력할때 조금 차이가 있음.


- SID

   jdbc:oracle:thin:@dbIp:dbPort:dbSid


- SERVICE NAME

   jdbc:oracle:thin:@//dbIp:dbPort/dbServiceName


연계서비스 개발중에..

Client 쪽에서 XML 타입의 문자열을 보내주면 Map 으로 변환해서(XMLEncoder 이용)

내가 Map 안에 쿼리문과 파라미터를 받아서 Query 실행 후에 데이터를 다시 XML 타입으로 변환해서(XMLDecoder)

 보내줘야하는 거 만드는 중인데..


Map 까서 일일이 Client 와 Key 값 정의해서 Value 빼와서 세팅하기가 번거러운거 같아서 구글링!

Iterator() 로 이게 가능하다는걸 암! 잊어버릴까봐 남긴다.


일단 Client 에서 보내주는 Map 의 양식은 다음과 같다.

Key : "sql", Value(String) : "SELECT * FROM WHERE PARAM1 = ?, PARAM2 = ? PARAM3 = ?"

Key : "params" Value(Map) :

Key : PARAM1, Value: 값

Key : PARAM2, Value: 값

Key : PARAM3, Value: 값


* 우선 PrepareStatement 를 쓸것이고, Params 의 갯수는 모른다. 항상 같은 쿼리문이 들어오는 것이 아니라,(총 연계 3부분)

   연계마다 따로 서비스를 개발하면 일일이 Key 값을 넣어서 코딩하면 되겟지만.. 싫다.


여기서 부터 구현

// Class.forName, DriverManager.getConnection 은 생략한다.

// Client 에서 Map 이 "paramMap" 으로 온다고 가정

// 두개의 키값, "sql", "params" 는 변함이 없다.


String sql = String.valueof(paramMap.get("sql"));

HashMap<String, Object> sqlMap = (HashMap<String, Object>) paramMap.get("params");


Set<String> key = sqlMap.keySet();

int paramIndex = 1;


for( Iterator<String> iterator = key.iterator(); iterator.hasNext(); ) {

String paramsKey = String.valueOf(iterator.next());

String paramsVal = String.valueOf(sqlMap.get(paramsKey));

// sql Query 에 값 넣기

stmt.setString(paramIndex, paramsVal);

paramIndex++;

}


요렇게 하면, 자동으로 index 증가하면서 params 입력

주의점 : sql Query 입력해야 할 ? 의 순서와 갯수가, params 에 담겨있는 순서&갯수 가 같아야한다.

이건 구지 얘기안해도 알아야 될 것;;


이렇게 데이타 조회해서 Map 으로만든 다음 다시 -> XMLDecoder 로 변환해서 소켓으로 리턴하면 끝!


'공부 > JAVA' 카테고리의 다른 글

JAVA_[Thread start() & run()]  (0) 2015.02.06
JAVA_[ 리눅스 권한변경 ]  (0) 2014.12.26
JAVA_[ EJB란? ]  (0) 2014.11.05
JAVA_[ Dynamic Web Project 에서 Tomcat(Catalina) Home 경로 얻기 ]  (1) 2014.11.04
JAVA_[ transient ]  (0) 2014.10.31

- 에러내용

제목과 동일 : IOException while loading persisted sessions: java.io.EOFException 


- 원인

톰캣 시작시 톰캣 work 디렉토리의 Session.ser 파일을 복원하는 과정에서 에러발생


- 해결방법

Tomcat > work > 하위의 *.ser 파일을 삭제하고 다시 톰캣 재기동


- 경로 

일반적으로 CATALINA_HOME > work > Catalina > localhost > examples

                                                                                    > host-manager

                                                                                    > docs


세 디렉토리 밑에 있다. 찾아서 지우면 된다. 혹시나 모를때는 찾아서 지운다.

해당 파일 찾기 명령어

find -name '*.ser' 이걸로 찾아서 경로 확인하고 가서 지우면 끝'- '

'공부 > ETC' 카테고리의 다른 글

ETC_[ TCP 와 UDP ]  (0) 2015.02.05
ETC_[ SID, ServiceName 입력차이 ]  (0) 2014.12.15
ETC_[ Tomcat 다중 인스턴스 띄우기 ]  (0) 2014.11.06
ETC_[ Win7 Telnet 설정 ]  (0) 2014.11.04
ETC_[Apache Error Code]  (0) 2013.08.24

+ Recent posts