IT한 것 116

AXIS에서 닫기태그(end-tag)가 사라질때

분명히 핸들러에서는 정상적인 메시지를 보냈음을 확인하고 return 했는데 SOAPMonitor를 보면 수십바이트의 데이터가 누락되어 닫기태그가 없다는 오류가 발생한다. 한참을 방황하다가 숫자놀이를 시작했는데, 누락된 데이터의 길이가 xml헤더의 길이와 일치하는 것이 아닌가? 그리하여 SOAPPart 객체에 setContent를 사용하는 방법에 문제가 있는 것이 아닌가를 확인하였고 원래 만들어두었던 DOMSource(Document)를 사용하던 방법을 사용하지 않고 StreamSource( InputStream )을 사용하여 Source를 만들었다. 그 결과 메지지가 누락되는 일은 발생하지 않았는데, 예상치 못하게 서버에서 정확한 응답을 해 주었다. 서버에는 변경된 소스를 적용하지 않았는데도 말이다. 일..

JAX-RPC 핸들러에서 OperationName 을 얻을 수 있는가?

표준 인터페이스를 통해서 얻는 방법이 있을까? 일단은 찾지 못했다. AXIS는 MessageContext 에서 getOperation 메서드를 제공하고, 웹로직도 비슷하게 제공한다. 그러나 결국 표준인터페이스라고 말하기는 힘들다. AXIS의 MessageContext 말고 표준 MessageContext 객체의 property를 보니까 wsdl.service 라는 이름으로 Service 객체가 삽입되어 있었다. 이 객체를 꺼내보니까 해당 서비스의 모든 OperationName을 얻어 낼 수 있었다. 그런데.. 내가 호출한 Operation이 어떤걸까? 이것만 알아내면 되는데... 불과 몇분 안지났다.. call_object 객체도 property에 들어있다. 말 그대로 Call의 인스턴스니까 맘대로 얻을..

AXIS에서 클라이언트용 JAXRPC 핸들러 만들때 유의 점.

기존에 웹로직에서 잘~ 작동하던 핸들러가 AXIS에서는 작동하지 않았다. 클라이언트건 서버건 어떠한 핸들러도 돌아가지 않았다. 신나는 구글링 끝에 개인 블로그에서 특정 메서드를 호출하면 AXIS가 핸들러를 호출하지 않는다는 내용의 글을 발견했다. 그래서 변경한 것이. ServiceFactory.createService() 메서드를 호출하던 것을 ServiceFactory.createService( URL, QName )으로, Service.createCall() 을 호출 하는 것을 Service.cretaeCall( QName )로 변경했고. Call.setPortTypeName( QName), Call.setTargetEndPointAddress( String ) 메서드를 주석처리 했다. 이렇게 하니까..

AXIS2에서 JAX-RPC

어제 종일 AXIS 1.4에서 JAX-RPC 핸들러를 써볼려고 했는데, 결국에는 실패했다. 어떤분께서 AXIS2에서 해보는건 어떠냐는 의견을 주시길레 냉큼 시도해봤다. 가볍게 설치하고 서비스를 하나 추가할까 말까 하다가 바로 핸들러를 돌려볼려고 했는데. 글쎄, 아직 지원을 안한단다.. 물론 최종버젼은 지원할 예정이라지만은.. ;; 참고는 여기서 했다.

libxml xmlGetNsList 후 xmlFreeNsList

절대로 안된다. 다행히 libxml은 소스가 있어서 확인해 봤는데. xmlGetNsList를 하면 내부에서 메모리를 할당한다. 이것까지는 좋은데, namespace를 복사하지 않고, 그 포인터를 할당한 위치에 적재시킨다. 다시말하자면, 껍데기만 만들고 알맹이는 딴 넘을 가져오는거다. 그래서 멋 모르고 xmlFreeNsList로 해체시키면 원본 xmlDoc 객체의 namsepace가 날아간다. 그럼 바로 xmlDoc 객체를 해체시킬때에 문제가 발생한다. 아이. 자증나.. 그렇지만, xmlFree 로 해제시키니 별 문제 없었다.

IT한 것/xml 2006.11.01

WebApplication

정말로 지겹게 듣기만 하던 문장이다. 어이없게도 최근 Webservice 관련된 일을 지겹게 하면서, 이에 손을 대지 않을 수가 없다. 우선는 ear 파일로 만들어지는데 그 내부에 보면은 application.xml application.war 등의 파일이 들어간다. war파일의 이름은 고정된 것이 아니고 xml 파일은 WebApplication 을 식별하기 위한 고정된 문서이다. 이 파일의 내부에는 사용할 war 파일들의 목록과 설명 등이 적혀 있다. war파일을 열어보면, WEB-INF 디렉토리 아래로 web.xml, web-service.xml, classes 디렉토리가 존재한다. 꼭 그래야 하는 것은 아니고, 내가 WebService 관련 작업을 하고 있으니까 그렇다. web.xml 내부에는 we..

IT한 것 2006.10.24

Issue tracker MANTIS 설치과정

1. 아파치를 설치한다. (생략) 2. PHP를 설치한다. (생략) 3. 아파치에 설정한 DocumentRoot 아래 mantis 바이너리를 몽땅 푼다. 4. 아파치를 기동하여 http://localhost/mantis/admin/install.php 에 접속한다. 5. mantis 관리자 비밀번호, db 종류및 계정, 비밀번호 등을 설정한다. 6. config_inc.php 가 자동 생성되나 그렇지 않은 경우, 브라우저에 그 내용이 나오니까 수동으로 만들자. 7. 상황종료 8. 한글 설정을 위해 config_inc.php 파일을 추가 수정 하였다. 자세한 내용은 검색. 8. 이메일 설정을 위해 config_inc.php 파일을 추가 수정 하였다. 자세한 내용은 검색.

IT한 것 2006.10.13

플랫폼별 패키지 설치하기.

AIX 명령 : smitty install 패키지와 라이센스 파일을 받아야한다. 예제 : java sdk 1.4 32bit Java14.sdk Java14.license 두 파일을 받아 위의 명령을 실행하고 이 파일들이 위치한 경로를 기입하면 설치된다. HP-UX 명령 : swinstall 확장자가 depot인 파일이 패키지 파일이다. 예제 : java sdk 1.5 jdk15_15003_ia.depot swinstall -s . ${PWD}/jdk15_15003_ia.depot 패키지의 경로는 반드시 절대경로. SOLARIS 명령 : pkg-get 원격저장소를 사용하는 패키지 관리 프로그램. 기본으로 설치되는 것은 아니고, http://www.blastwave.org/packages.php 이런 곳에서..

IT한 것/unix 2006.09.08

문서화

나는 축복 받은 것 같다. 보통 개발자는 문서화를 무지하게 싫어한다고 한다. 그러나 나는 글을 좋아한다. 아마 한글에 관심을 가지게 되서가 아닐까라고 생각은하지만. 뭐.. 그렇다고 치자. 어찌되었든 문서화의 필요성을 더더욱 느꼈고, 입사하면서 부터 각종 문서를 만들기 시작했다. 그러나 여기저기 퍼져있는 문서는 만들때는 재미있지만, 필요한 상황에서는 찾기가 너무 힘들었다. 그리하야. moniwiki 시작이다.

IT한 것 2006.08.18