JBoss 4.3 で実行する既存のアプリケーションを JBoss 7 に変換する際に、Web サービス認証 (WS-Security) に問題があります。
https://docs.jboss.org/author/display/JBWS/JBoss+Web+Services+Documentationの情報に従っていますが、WS-Security 認証で機能しているようです。
Web アプリケーションには jbossws-cxf.xml ファイルが含まれており、JBoss 7 には spring モジュールが正しくインストールされています。エンドポイントは、次の XML で構成されます。
<beans xmlns='http://www.springframework.org/schema/beans' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:beans='http://www.springframework.org/schema/beans'
xmlns:jaxws='http://cxf.apache.org/jaxws'
xsi:schemaLocation='http://cxf.apache.org/core
http://cxf.apache.org/schemas/core.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd'>
<!-- WS-Security -->
<bean id="webServicePasswordCallBack" class="ie.one23.general.security.WebServicePasswordCallback">
<property name="WS_USERNAME" value="${properties.ws-credentials.username}" />
<property name="WS_PASSWORD" value="${properties.ws-credentials.password}" />
</bean>
<bean id="SMSServiceLoggingCXFIncomingInterceptor" class="ie.one23.general.logging.LoggingCXFIncomingInterceptor" />
<!-- Web Service endpoint -->
<!-- See https://docs.jboss.org/author/display/JBWS/Apache+CXF+integration -->
<jaxws:endpoint id="SMSService" implementor="ie.one23.commonservices.webservice.controller.SMSWebServiceImpl" address="/SMSService/SMSService">
<jaxws:inInterceptors>
<!-- WS-Security -->
<bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
<bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
<constructor-arg>
<map>
<entry key="action" value="UsernameToken" />
<entry key="passwordType" value="PasswordText" />
<entry key="passwordCallbackRef">
<ref bean="webServicePasswordCallBack" />
</entry>
</map>
</constructor-arg>
</bean>
</jaxws:inInterceptors>
<jaxws:outInterceptors>
</jaxws:outInterceptors>
</jaxws:endpoint>
</beans>
ここでの問題は、プロパティ WS_USERNAME と WS_PASSWORD が、実際の値ではなく、それぞれ実際のテキスト ${properties.ws-credentials.username} と ${properties.ws-credentials.password} で Bean に注入されていることです。プロパティ ファイルから取得され、次の XML を使用してロードされます (別の Spring 構成 XML ファイル内)。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!-- ================================================================== -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>file:/${jboss.server.config.dir}/props/sms-service-credentials.properties</value>
</list>
</property>
</bean>
<!-- ================================================================== -->
</beans>
プロパティがBeanに注入された後にのみプロパティファイルがロードされているかのようです....
誰かがこの問題に遭遇し、それを解決する方法を知っていますか?
どうもありがとう