2011-08-04 8 views
3

内部WebサービスのWSDL URLをSpringのbeans beans.xmlに、PropertyPlaceHolderConfigurerを使用して動的に渡したいとします。Spring PropertyPlaceholderConfigurerがプレースホルダを置き換えない

私のWebアプリケーションはWebLogic 10.3にデプロイされています。 WSDLのURLは、の外部にあるのアプリケーション(対応するドメインフォルダの直下、私のアプリケーションはのautodeployフォルダ内にあります)にあるプロパティファイルに含まれています。

Service.WSDL.PATH=http://localhost:8088/mockServiceSoap?WSDL 

私の春のbeans.xmlの設定を:

set JAVA_PROPERTIES=%JAVA_PROPERTIES% %CLUSTER_PROPERTIES% -Dproperty.file.path.config=%DOMAIN_HOME%\Service.properties 

これは私Service.propertiesファイルが含まれているものです:私は、このプロパティの場所はファイル以下のように自分のドメインのにあるsetDomainEnv.cmdファイルを設定しました:----

<bean id="file.path" class="java.lang.System" factory-method="getProperty"> 
     <constructor-arg index="0"><value>property.file.path.config</value></constructor-arg> 
</bean> 

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="location" ref="file.path"/> 
</bean> 

<bean id="myServiceId" class="com.test.service.ServiceImpl"> 
    <property name="myServiceSoap"> 
    <ref bean="myService"/> 
    </property> 
</bean> 

<bean id="myService" class="org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean"> 
    <property name="serviceInterface" value="com.test.service.ServiceSoap"/> 
    <property name="wsdlDocumentUrl" value="${Service.WSDL.PATH}"/> 
</bean> 

私は特にPPCのデバッグログを有効にし、これは私が自分のアプリケーションログで見たものである:

 
INFO org.springframework.beans.factory.config.PropertyPlaceholderConfigurer 178 - Loading properties file from URL [file:D:/bea10.3/user_projects/domains/my_domain/Service.properties] 

だから、Service.propertiesファイルがPPCによってロードされつつあるものの、${Service.WSDL.PATH}を交換取得していないようです。

私はここで間違っていますか?

また、PPCがプレースホルダーの値をどの値で置き換えようとしたかを知るにはどうすればよいですか?ログファイルにその情報が含まれることを期待していましたが、そこには何もありませんでした。

何か助けていただければ幸いです。

+0

試してみてください:ServletContextPropertyPlaceholderConfigurer - 違いが分かりません – Ralph

+0

Application Startup Exceptionを取得しましたか、またはプロパティが置き換えられていませんか? – Ralph

答えて

2

私は、PropertyPlaceholderConfigurerを最初にアプリケーションコンテキストファイルで宣言する必要があることを理解しました。そうでない場合は、ロード順序が保証されません。これを実現するには数時間かかりました。

"file.path" beanをPropertyPlaceHolderConfigurerのlocationプロパティに移動してみてください。

関連する問題