IT한 것 116

factory.createService 에서 Connot find service

위와 같은 메시지만을 보아도 확신을 가져야한다. 서비스를 찾을 수 없다는 말이다. 서비스는 Target namespace와 service name으로 찾는다. 이 두가지 값이 키가 되기 때문에 한글자라도 다른 것이 아닌가 확인해야한다. 그렇다면 뭐랑 비교 확인해야하는가? WSDL문서의 /wsdl:definitions/@targetNamespace, /wsdl:definitions/wsdl:service/@name 이다. 역시, 아무런 지식없이 시작하면 이런 간단한 것 조차 시간을 잡아먹는 요소가 된다.

Java XML 파서 변경하기

Java에는 XML 파서가 내장되어 있다. Crimson 파서가 그녀석인데, 성능이 별로 안좋은지, 대부분 다른 것을 사용한다. 그렇다면 다른 파서로 변경은 어떻게 해야할까? WAS나 AXIS 같은 애들은 알아서 셋팅을 해주는 것 처럼 보인다. 대체 어떻게 해먹는지 몰라서 ${JAVA_HOME}/jre/lib/endorsed 에 다른 파서를 강제로 넣어주었다. 그런데 나는 이런방법을 무지 싫어한다. 고로 다른 방법을 찾던중 오늘 실마리를 잡아 해결였다. 우선은 Manifest 라는 녀석에 대해서 알고 있어야한다. 잘 알 필요는 없고, 이 녀석에 의해서 기본 파서를 변경할 수 있고, 그 방법만 알면 된다. 보통 jar 로 패키징한 녀석을 풀어보면 META-INF 라는 디렉토리가 생긴다. 여기에 들어가는 정..

IT한 것/xml 2007.03.23

AIX에서 Informix esql 로 빌드할때에 생기는 문제

왠만한 환경이 아니고서야 DB를 Thread safe 모드로 빌드해야한다. Precompile 후에 모듈을 링킹하는 과정에서 cc를 사용했는데, 별 문제가 없었으나, 무슨 탓인지 AIX에서는 기가막힌 문제가 발생했다. 기존의 Makefile 로 빌드하면 loc_t 라는 구조체가 INFORMIX 헤더에도 있고 SYSTEM 헤더에도 있어서 충돌하는 문제가 발생한다. 이에 대한 해결책은 아래처럼 _H_LOCALEDEF 값을 선언해주면 된다. gcc -D_H_LOCALEDEF (원래옵션들) 그런다고 문제가 바로 해결되지는 않았다. 빌드과정에서는 모든 문제가 사라졌지만, 막상 모듈을 돌리려고 하면, t_connect 등의 t_로 시작하는 함수들이 참조는 되었으나 실 모듈에서는 찾을 수 없다는 어머어마한 오류가 뜬..

IT한 것/unix 2007.03.23

AIX에서 Informix esql을 사용하는 중 25507 오류

finderr 명령으로는 알아낼 수는 없지만, 보통 service name이 유효한 것이 아닐때에 발생한다고 한다. 그러나, 한두번 설정해본 것도 아니고 service name이 틀리지는 않았다. 사실 AIX에서 Informix esql을 사용해본 것이 처음이라는 것이 문제였다. 기존에 설정되어 있던 환경을 아는 것도 아니고, 다른 플랫폼에서 돌리던 설정을 가져오는 것에 불과하기에.. 해법은 간단했다, 누군가가 서비스 타입에 대해서 의견을 제시한 것을 발견했고 해당 플렛폼은 Soalris 라고 하는데.. 지금까지 설정은 Solaris에 있던것을 가져온 것이니, 서비스 타입을 바꿔보기로 했다. 원 서비스 타입은 ONTLITCP 였고 ONSOCTCP로 변경하였다. 그리고 상황 종료...

IT한 것 2007.03.23

직접 정의된 네임스페이스와 접두어를 가진 엘리먼트의 XPATH 검색

[code] XecureWSS Encryption Sample testing [/code] 위의 XML을 대상으로 중간에 echoStringResponse를 검색하는 방법을 생각해보자. 가장 간단히 생각한 것이 //ns1:echoStringResponse 너무 간단하다. 그러나 검색기를 돌려보면 그런 네임스페이스 접두어는 선언되지 않았다고 내뱉을 것이다. 내가 네임스페이스의 scope에 대해서 제대로 이해하고 있는 것이 아닌지 의심스럽다. 아마도 직접 정의한(네임스페이스가 적용되는 엘리먼트에서 정의한) 네임스페이스의 접두어는 외부에서 찾을 수 없는 것이 아닌가 한다. 현재 확인해본 검색기는. XML SPY 2006, oXygen 8.1, xerces(버젼이 기억안난다.) 이다.. 모두 모두 못찾겠다고 한..

IT한 것/xml 2007.03.09

Java application이 임시디렉토리의 공간이 부족하다고 나올 때

아마, 어떤 플랫폼에도 해당하는 이야기인 것 같은데, 정말로 임시디렉토리 /tmp 의 공간이 부족한 경우가 있다. 물론 필요없는 파일을들 지우면 되겠지만, 상황이 여의치 않은 경우도 있다. 적은 공간에 weblogic을 설치하려다보니 상당한 공간의 임시디렉토리가 필요했다. tmp의 전체 크기보다 많은 공간이 필요한것 같았다. 500메가의 jar를 임시디렉토리에 풀려는 것 같았으니까 말이다. 상당히 난감해보이는 상태였는데, 해결책은 간단했다. 임시디렉토리의 위치를 일시적으로 바꾸는 것. unix의 경우 쉘 변수 IATEMPDIR 값을 설정하면 된다고 나왔으나, java application은 달랐다. -Djava.io.tempdir="/newtmp" 옵션을 주어 변경했다.

IT한 것 2006.12.22

솔라리스 콘솔 케이블

솔라리스 콘솔 케이블이 필요하다. 물론 제작하면 좋겠지만, 어디서 살 대 없을까. 서버는 Fujitsu PrimePower 450이다. cisco 라우터의 랜콘솔을 연결해보니 잘 작동했다. 그 콘솔의 제품번호?는 72-3383-01 다. 설명을 보니까 "Cisco Compatible Console Cable DB9 to RJ45 Lt Blue" 아무튼 콘솔 케이블이란다. 또다른 어댑터를 이용하여 붙여봤는데, 실패했다. 이 어댑터는 "Cisco 74-0495-01 Eq. RJ45 / DB9F RS-232 Modular Adapter" 잘은 모르지만, 안된다! 우선은 핀 배선이 되어있지 않은 어댑터를 가지고 한번 조합해봐야겠다. 아래에는 제작법을 공개한 듯 하다. 여기

IT한 것/unix 2006.12.14

AXIS에서 핸들러 등록시 발생한 ServiceException

javax.xml.rpc.ServiceException: Provider com.sun.xml.rpc.client.ServiceFactoryImpl not found 예외가 발생하고 핸들러 등록하는 위치에서는 NPE가 발생한다. 분명히 axis.jar 등을 넣으면 되는 걸로 알고 있다. Eclipse에 등록된 프로젝트에서 axis.jar 를 빼자 이 오류가 발생했기 때문이다. 그러나 현재 구성중인 ant로 구성된 환경에서는 axis.jar 를 넣어도 문제가 발생했다. 누구 문제일까?

Dangling Pointer

대체 무슨 말인가 했다. 검색해보니 한 포인터가 가르키는 주소가 할당되지 않은 공간이란 얘기다. Devpartner로 누수검사를 잘~ 마치고 프로그램을 종료시키는데, 순간 오류 목록에 dangling pointer가 주르륵 늘어나기 시작했다. 좀더 검색해보니 구 KLDP에서 이에 대해 다룬 내용이 있었다. (현재 링크는 바뀐듯하다. 구글의 저장된 페이지보기 기능으로 봤음) Vector를 사용하는 중에 push_back 메서드로 내용을 추가하는데 위와 같은 문제가 발생했다고 한다. (나 역시 동일한 상황이다). vector에 내용을 추가하면서 그 크기가 늘어나는 과정에 뭔가가 있나보다. 그래서 push_back 을 하기 전에 reserve 메서드로 미리 vector의 크기를 늘려주면 위와 같은 오류메시지는..

IT한 것 2006.11.17