문제

고객이 클라이언트로 Java Webservices Stubs를 생성하기 위해 좋은 라이브러리를 추천 할 수 있는지 알고 싶습니다.

현재 WSDL이 필요한 발전기를 내장 한 다음 필요한 클래스와 방법을 생성하는 제품을 사용하고 있습니다.

내 문제는 경고를 던지고 사용하려는 일부 웹 서비스에 대한 방법을 만들지 않는다는 것입니다.

진짜 문제는 문제가 무엇인지 설명하지 않기 때문에 (따라서 웹 서비스의 소유자와 함께 가서 수정할 수 있습니다) 또는 OUPUT를 수정하여 문제를 해결할 수 있습니다.

그러나 웹 서비스의 소유자 (이것은 여러 다른 ws에서 발생하기 때문에)는 그들의 ws가 잘 실행되고 실제로 내가 사용하는 경우 SOAPUI 그들은 실제로 일합니다 !!!

나는 Soapui It Self가 사용하는 도서관을 간단히 살펴 보았고 나는 유망한 것처럼 보인다.

나는 있다는 것을 알고있다 중심선 작업을 수행해야하지만 내 관심사는 실패한 발전기가 이미 해당 라이브러리를 사용하고 있다는 것입니다 (다시 실패 할 것입니다).

그리고 최근 에이 두 라이브러리가 Java 소스 스터브를 생성하는지 아니면 다음과 같은 방법 만 있는지 모르겠습니다.

Object [] args = ...;
service.inkvoke("updateCustomer", args );

내가 갖고 싶은 것이 다음과 같습니다.

CustomerWs cws = ....
cws.updateCustomer(custId, custName, custAddress /*etc*/ );

그래서 누구나 좋은 권장 할 수있는 WS 스터브 생성기?

나는 내 자신의 수작업을하려고하지만 받아 들일 수있는 데 며칠이 걸릴 것입니다.

도움이 되었습니까?

해결책

현재 무엇을 사용하고 있습니까? 나는 Axis wsdl2java를 개미 작업으로 사용합니다. 원하는 스텁 유형을 생성합니다. 빌드를 실행하기위한 클래스 경로를 설정하는 것은 일식에 약간의 고통이었습니다 (추적하고 포함하는 데 필요한 소수의 항아리가있었습니다). 내 개미 빌드 파일에서는 다음과 같습니다.

<taskdef name="axis-wsdl2java" classname="org.apache.axis.tools.ant.wsdl.Wsdl2javaAntTask" />
<target name="foo">
<axis-wsdl2java
              output="${build.dir}"
              testcase="false"
              verbose="true"
              typemappingversion="1.2"
              url="http://ws.domain.com/url/of/WebService?wsdl" />
<!-- Compile, etc... -->
</target>

다른 팁

"축"를 참조 할 때 정말로주의하십시오. 아파치 축 1 2006 년 초에 교착 상태와 CPU 스핀 (둘 다 경험 한)으로 이어지는 스레드 안전 버그로 2006 년 초에 버려졌습니다. 당신은 그것을 사용하는 것을 깊이 후회할 것입니다. 아파치 축 2 완전한 재 작성이며 볼만한 가치가 있습니다. 그러나 나는 당신이 먼저 보는 것을 제안합니다 아파치 CXF 그리고 Glassfish Metro.

업데이트 : 다음은 버그 보고서입니다 이중 자물쇠 그리고 100% CPU 스핀. 여기 Cyrille Le Clerc입니다 제안 된 패치 3 년 전, 결코 헌신적이지 않았습니다.

우리는 고객을 직선 Java로 다시 코딩하여 교착 상태와 회전을 제거했습니다. 그리고 Axis Server는 HTTP 500 오류를 다시 보내면서 우리와 대화를 거부했습니다. 우리는 적절한 응답을 얻기 위해 축의 클라이언트라고 거짓으로 주장해야했습니다. 비누 상호 운용성은 Axis 1 팀의 우선 순위가 아닙니다.

나는 Apache CXF를 좋아합니다. 플러그인을 통해 Maven과 잘 통합되어 작동합니다. 나는 클라이언트 스텁 코드 생성에 잠시 동안 그것을 사용해 왔으며, 마지막으로 일한 회사에서는 WS의 서버 부분에도 그것을 사용하고있었습니다.

CXF + Maven + Subversion과 함께 작업 한 마지막 프로젝트에서는 Subversion에 생성 된 클래스를 포함하지 않았으며 WSDL 파일의 사본 만 포함하지 않았습니다. Stub 클래스는 Maven의 "Generate"목표에서 생성되었습니다.

Apache Axis 2는 갈 길입니다 ...하지만 제대로하기 위해 조금 플레이해야 할 수도 있습니다. 아마도 가장 일반적인 방법 일 것입니다. 아마도 당신이 사용하는 도구는 Axis 1을 기반으로합니까?

표준 기반 API를 기반으로 무언가를 사용하는 것이 좋습니다. 그것은 JAX-WS API를 의미합니다. Apache CXF와 Metro는 두 가지 주요 JAX-WS 구현이지만 JBoss도 구현을 가지고 있습니다. Axis2에는 인증되지 않은 구현이 있지만 코드 유전자 지원은 없습니다.

표준 기반 API를 사용하는 것의 가장 중요한 부분은 제품에 문제가 발생하면 다른 것을 시도 할 수 있다는 것입니다. 내가 본 많은 경우에, 다른 제품도 작동하지 않지만 다른 오류 메시지 나 이와 유사하게 뱉어내는 것이 실제로 우리 자신의 코드 또는 WSDL에서 문제가된다는 사실을 진단하는 데 도움이 될 것입니다.

또한 JAX-WS는 Java6으로 제작되었습니다. Java6에서 실행할 계획이라면 사용할 수 있으며 추가 항아리 등을 처리 할 필요가 없습니다.

메트로의 일부로 최신 JAX-WS (http://metro.dev.java.net)는 꽤 좋은 추상화 레이어입니다. 약간의 조정이 필요하지만 다른 옵션보다 훨씬 직관적이었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top