2013-08-08 10 views
1

내가하려는 것은 .properties 파일이나 any와 같은 것으로 끝점 주소 구성과 서비스 버전을 구분하는 것입니다. UAT 및 PRODUCTION 환경과 같은 다양한 환경에서 끝점이 달라집니다. 또한 서비스 제공자는 ABCDEF_10_4와 같은 명명법을 사용하여 서비스/메시지 버전을 제어하고 ABCDEF는 서비스의 이름이며 10.4는 릴리스 버전입니다. 우리는 서비스 소비자 일 뿐이므로 서버 쪽에서는 아무 것도 변경할 수 없습니다. .properties의 유사가wsdl 및 생성 된 스텁에 속성 파일에서 읽은 속성을 얻는 방법

endpointurl=http://xxx.xxx.xxx.xxx:10000 
msgname=ABCDEF_10_4 
servicename=myService 
같은 파일 값 쌍 :

는 내가 찾던 나는 이름에 그 값을 지정할 수있는 곳

<wsdl:operation name="service1"> 
    <soap:operation soapAction="**${endpointurl}/${msgname}**" /> 
    <wsdl:input> 
     <soap:body use="literal" /> 
     <soap:header use="literal" message="tns:MessageHeader" part="session" /> 
    </wsdl:input> 
    <wsdl:output> 
     <soap:body use="literal" /> 
     <soap:header use="literal" message="tns:MessageHeader" part="session" /> 
    </wsdl:output> 
</wsdl:operation> 

<wsdl:service name="**${servicename}**"> 
    <wsdl:port binding="tns:ServiceBinding" name="ServicePort"> 
     <soap:address location="**${endpointurl}**" /> 
    </wsdl:port> 
</wsdl:service> 

비슷한의 사용을 할 수있는 방법입니다

문제는 서비스 제공 업체가 새로운 버전의 서비스를 출시 할 때마다 wsdl을 변경하고 싶지 않으며 나와 팀이 한 곳에서만 서비스 버전을 관리하는 것이 더 쉬울 것입니다.

또한 우리는 UAT/DEV/PROD/TEST 환경에서 응용 프로그램을 배포 할 때 매번 wsdl을 변경하거나 각 환경에 대해 많은 wsdl 파일을 가질 필요가 없습니다.

우리는 클라이언트 스텁을 생성하기 위해 maven cxf codegen plugin을 사용하고 있습니다.

이와 비슷한 어떤 생각이나 가능한 방법이 있을까요?

+0

내가 필요한 항목에 대처하기로되어있는 maven-properties-plugin을 발견했습니다. jar 파일을 빌드하고 wsdl을 검사했는데 wsdl 파일의 $ {param}이 .properties의 값으로 바뀌 었습니다. 그러나 생성 된 클라이언트 스텁의 $ {param}은 대체되지 않습니다. 생성 된 src의 모든 리소스를 properties에 지정된 값으로 대체 된 변수로 바꾸는 방법이 있습니까? 도움을 주시면 감사하겠습니다. – papokk

답변

0

OK, 3-4 시간 동안 Google을 파헤 치면 대답을 찾았고 커뮤니티에 기여해야한다고 생각합니다.

먼저 새 프로필을 만들고 maven-resources-plugin 필터링을 사용하여 .properties 파일의 wsdl에서 $ {param}을 대체하고 바꾼 리소스를 대상 폴더에 복사합니다.

그런 다음 프로필에서 생성 된 WSDL에서 webservices 클라이언트를 생성하기 위해 사용자 cxf-codegen-plugin을 사용합니다.

그게 전부예요 :)