2014-07-18 7 views
1

일부 작업에 도움이 필요할 수 있습니다. 나는 WebServiceTemplate 구성 아래와 같이있다 :WebService config WebServiceTemplate이 defaultUri 매개 변수를 동적으로 사용합니다.

<bean id="serviceTest" class="org.springframework.ws.client.core.WebServiceTemplate"> 
    <property name="marshaller" ref="jaxbMarshallerOpe" /> 
    <property name="unmarshaller" ref="jaxbMarshallerOpe" /> 
    <property name="messageSender"> 
     <bean class="org.springframework.ws.transport.http.CommonsHttpMessageSender"> 
     </bean> 
    </property> 
    <property name="interceptors"> 
     <list> 
      <ref bean="soapMessageInterceptor" /> 
     </list> 
    </property> 
    <property name="defaultUri" value="?????????????" /> 
    <constructor-arg ref="messageFactory" /> 
</bean> 

꿈꾸는 cenário는 값을 대체하는 것입니다 = "?????????????"을 데이터베이스의 일부 값과 함께 사용하거나 응용 프로그램에서 변수 값을 입력하십시오. 그렇게 할 수있는 방법이 있습니까?

내 클라이언트가 서비스를 변경할 수 있기 때문에 동적 인 방법으로 WSDL 주소를 입력해야합니다. 자주는 아니지만 가능성이 있습니다.

나는 이것을 어떻게 달성 할 수 있는지 아는 사람이 있습니까?

답변

1

당신은 그 <context:property-placeholder>을 위해 제공 Properties에서 진정한 가치를 해결하기 위해 <context:property-placeholder>를 사용할 수 있습니다

<property name="defaultUri" value="${web.service.url}" /> 

이 문제에 대한 자세한 문서를 참조하십시오 http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-factory-placeholderconfigurer

UPDATE

당신이 만약 런타임에 defaultUri을 변경하려고하면 inject을 입력해야합니다.3210 Bean을 일부 서비스로 가져 오며 속성을 가져옵니다. DB에서 직접 setDefaultUri을 호출하십시오. DB, 파일 업데이트, 웹 UI, JMX 등 모든 속성 제공 업체에서 사용할 수 있습니다.

+0

속성의 문제는 클라이언트가 런타임에 편집 할 수 없다는 것입니다. 이 솔루션은 사용자가 정보를 업데이트 할 때 데이터베이스에서 정보를 읽을 수있는 속성을 가지고 작동합니다. 또 다른 질문은 구성에서 속성을 읽으므로 속성 값을 변경하면 springws 구성이 변경을 식별하고 구성을 자동으로 다시로드합니다. 또는 efect 할 응용 프로그램을 다시 배포해야합니까? –

+0

런타임 업데이트에 대한 정보를 추가했습니다. –

0

DestinationProvider 인터페이스를 살펴보십시오. 나는 그것이 당신이 필요로하는 것이라고 생각합니다.

+0

답변을 주셔서 감사합니다 .... 시나리오를 테스트하고 여기에 결과를 반환합니다. –