기본 콘텐츠로 건너뛰기

라벨이 WCF Programmig인 게시물 표시

WCF parameter와 return에 대해 알 수 없는 현상들...

이전 Post에서도 밝혔듯이 최근의 프로젝트는 WCF를 사용하고 있다. 프로젝트 Framework가 Spring.NET이다 보니 WCF의 설정 및 프로그램도 Spring.NET을 최대한 이용하고 있다. 그런 이유인지 모르겠지만, 약간 이상한 현상들이 나타나곤 한다. 최근에 발생한 문제는 Parameter로 받아서 해당 변수를 처리하여 그대로 리턴한 경우인데... 즉 간단히 함수를 보면. IList<someobject> SetChangeList(IList<someobject> paramList) { foreach(SomeObject item in paramList) { item.SomeValue = "value"; } return paramList; } 뭐 이런식의 형태라는 거다. 로컬 컴퓨터에서 해당 클래스의 해당 함수에 대한 모듈 단위테스트는 당연히 성공. 로컬 컴퓨터에서 WCF 메쏘드로 호출하는 단위 테스트도 성공. Commit 하고 테스트 서버에 배포!! 테스트 서버에서도 모듈의 단위테스트는 성공.. 그런데!! WCF 단위 테스트는 실패다. 그런데 정상적으로 무언가 판단할 수 있는 오류도 없다. WCF 로그에도 아무런 내용이 없다. 설상가상 해당 웹서비스는 재기동까지 되어있는 상황이더라는... 서버이벤트에 해당 웹서비스의 Pool이 중지되었다는 오류 메시지와 함께 웹서비스 시작 시 찍도록 한 로그들이 주루륵... 처음부터 위의 코드가 문제가 있다는 걸 안건 아니고, 이런저런 로그를 남기다 보니 저 부분에서 코드를 점프한다. 위 코드가 실행되는 블록은 분명 try, catch 되어있지만, catch 되지도 않는다. 이런저런 처리를 하다가 받은 리스트를 그대로 리턴하지 않도록 아래와 같은 수정을 해보게 됐다. 즉, IList<SomeObject> SetChangeList(IList<SomeO...

WCF 에서 DataTable 을 사용할 때 Table Name 문제

요즘 회사에서 WCF 서비스와 WebOrb를 이용한 플렉스 프로젝트를 진행하고 있다. 이 외에도 C++로 만들어진 서버와는 gSoap으로 통신하는 부분도 있긴 하지만... 기본적으로 WebOrb아 통신하는 부분은 크게 꼭 Generic 타입을 사용해야 할 필요도 없고, 대부분의 데이터 역시 그리드에 표시할 내용들이라 DataTable 을 이용하고 있다. 기본적으로 Data는 POJO형태의 데이터를 iBatis 를 통해 맵핑되어 넘어온 IList<어쩌구> 를  DataTable로 Convert 해주는 함수를 만들어서 쓰고 있는 형태이다. POJO에 관계없이 DataTable로 만든 함수를 이용하다 보니 갑자기 Serialize 에러가 발생하더라는... 분명히 함수만 테스트를 했을때는 아무 문제가 없었는데..  결국, WCF 의 Trace 로그를 찍어보니 쳇... DataTable에 TableName이 없단다. 쩝~~ 결국 Convert 해주는 함수의 new DataTable() 했던 부분에  new DataTable(POJO타입네임) 형태로 바꿔줘서 해결했다는.. 쩝~~