블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
Google (83)
Spring (31)
JAVA (176)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
04-19 06:25
 

달력

« » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
 

최근에 올라온 글

최근에 달린 댓글


QName 문제를 해결하고 나니 보안 문제가 발생하였습니다.

Fault faultString="Security error accessing url" faultCode="Channel.Security.Error" faultDetail="Destination: DefaultHTTP"


위의 문제는 crossdomain 문제라는 것을 알고 있기에 평소에 잘 사용하던 crossdomain.xml 을 해당 웹 서버 루트에 반영하고 다시 테스트를 하였으나... 똑같은 문제가 발생하였습니다.

서버의 오류 메시지를 확인해 보니 아래의 사이트를 참고하라고 하였습니다.
http://www.adobe.com/devnet/flashplayer/articles/fplayer9_security.html

여기저기 뒤져보다가 crossdomain 관련 pdf 까지 확인을 하였습니다.



최소한의 제한으로 설정하는 crossdomain 을 찾아 설정하니... 잘되었습니다.

아직 플렉스는 잘 모르니 일단 저걸로 설정 ~~

Posted by 자수씨
, |

어제 회사에서 Cordys 웹 서비스와 Flex를 연동하려는 작업을 진행하였습니다.

자바에서 JAX-WS + SpringWS 를 이용하여 정상적으로 잘 호출된 웹 서비스였는데... 아래와 같은 오류가 발생하였습니다.

TypeError: Error #1034: Type Coercion failed: cannot convert (some object) to QName
or
faultCode:EncodingError faultString:'Error #1034' faultDetail:'null'


계속 검색하고 테스트하고 삽질을 반복한 결과 해결책을 찾았습니다.

아래와 같이 새로운 ActionScript 클래스를 생성합니다.

그런 후에 웹 서비스 호출하는 부분을 다음과 같이 수정합니다.

[웹 서비스 선언]

[수정 전]

[수정 후]


Operation 객체의 encoder 를 SimpleEncoder 로 설정하고 파라미터들을 xml element 형식으로 설정합니다.



참고 자료: http://coder.sonicpoets.com/?p=6

Posted by 자수씨
, |

웹 서비스 클라이언트를 가장 빨리 테스트 할 수 있는 방법은 이클립스에서 Apache Axis 를 이용한 클라이언트를 제너레이션 하여 테스트하는 것 입니다.

하지만 HTTP Authentication 인증 처리는 자동화해주지 않기 때문에 제너레이션된 소스에 별도의 수정이 필요합니다.

생성된 클래스 중 [ServiceName]Location.java 파일이 있을 것 입니다.
저의 경우에는 WorkflowWebServicesserviceName 이기 때문에 WorkflowWebServicesLocator.java 파일을 수정하였습니다.


getWorkflowWebServicesPort(java.net.URL portAddress) 메소드에서 생성된 stub 에 username 과 password 프로퍼티를 설정하는 것입니다.
_stub._setProperty(_stub.USERNAME_PROPERTY, "vicki");
_stub._setProperty(_stub.PASSWORD_PROPERTY, "vickivicki");

위와 같이 username 과 password 를 설정하면.... HTTP 인증 절차도 통과가 됩니다.

유후~~

오늘 웹 서비스만 너무 많이 파고 들어간거 같네요... 힘이 듭니다. 털썩...

Posted by 자수씨
, |

기존에 Spring WebServices 로 웹 서비스 클라이언트를 이용하려면 아래와 bean 을 이용하였습니다.




하지만 HTTP Authentication 을 거쳐야 한다면 -ㅁ-;;;  무언가의 작업이 필요합니다.

그냥 원래의 wsdl 주소를 읽으려고 하면 다음과 같은 오류가 발생합니다.
Caused by: javax.xml.ws.WebServiceException: Failed to access the WSDL at: http://localhost:8080/WorkflowWebServices?wsdl. It failed with:
 Server returned HTTP response code: 401 for URL: http://localhost:8080/WorkflowWebServices?wsdl.




1. 브라우저를 통하여 wsdl 에 접근하여 해당 파일을 별도로 저장하여 클래스 패스에 위치시킵니다.
2. wsdlDocumentUrl 프로퍼티를 classpath 에서 읽을 수 있도록 설정합니다.
(해당 wsdl 자체에 접근하려면 인증이 필요한데 wsdl 을 읽을 단계에서는 인증처리가 안되기 때문입니다.)
3. username, password 프로퍼티를 설정합니다.
4. 웹 메소드 호출을 수행합니다.

username 과 password 가 옳지 않으면 다음과 같은 오류가 발생합니다.
Caused by: com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 401: Unauthorized

모든 조건을 만족하게 되면 정상적으로 웹 서비스의 웹 메소드를 호출할 수가 있습니다.


Posted by 자수씨
, |

회사에서 개발하는 솔루션이 spring framework 기반이라 웹서비스도 spring webservices 로 구축을 하였는데, JBoss 에 올리려고 하니 여러 오류가 생겨 재 작년부터 고민하고 여러가지 시도를 하였으나 실패를 하였습니다.

우연히 다른 것을 검색하다가 발견한 것에서 아이디어가 떠올라서 여러가지 실험을 해본 결과 JBoss 용 웹 서비스를 publish 하는 데 성공하였습니다.



기존의 Spring WebServices Class

별 다른 작업 없이 DI 를 이용하여 service 객체를 이용하여 웹 서비스를 제공하였습니다.



JBossWS 에서 Spring Bean 사용하는 WebService Class

JBossWS 에서@Resource 라는 어노테이션을 이용하여 ThreadLocal 한 WebServiceContext 객체를 설정할 수 있습니다.
메소드에 어노테이션 설정하여 WebServiceContext 객체가 웹 서비스 객체에 설정이 될 때 Spring Bean 을 WebApplicationContext 를 이용하여 가지고 오는 방법을 사용하였습니다.


이렇게 구성된 웹 서비스를 JBoss 에 publish 하는 방법은 단순합니다.

web.xml 에 servlet 과 servlet-mapping 에 웹 서비스 클래스를 등록하는 것이 전부입니다.


Spring WebService 로 publish 할 경우 별도의 포트로 binding 해야 하지만 JBossWS 는 JBoss 포트로 서비스가 가능합니다.

포트가 하나로 통합되면 얻는 이점이 많을 듯 합니다





Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백