Я использую файл application.properties для общих конфигураций, которые я собираюсь создать позже, на основе профиля. Теперь я использую другой файл конфигурации root-context.xml, в котором настроен клиентский компонент jaxws. Я хочу передать адрес конечной точки для этой конфигурации bean-компонента из файла application.properties, используя заполнитель свойства контекста, но он вызывает следующую ошибку:
Caused by: java.io.IOException: java.net.URISyntaxException: Illegal character in path at index 1: ${sample_endpoint}
Вот структура проекта
Вот моя конфигурация SRC / основные / ресурсы / application.properites
config.monitor.dir=C:/Users/xxx/Documents/resources/artifacts
application.config.file.name=application-config
sample_endpoint=http://xx.x.x/sampleInquiry/01
SRC / основные / ресурсы / корень-context.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" xmlns:jee = "http://www.springframework.org/schema/jee"
xmlns:tx = "http://www.springframework.org/schema/tx" xmlns:p = "http://www.springframework.org/schema/p"
xmlns:jaxws = "http://cxf.apache.org/jaxws" xmlns:context = "http://www.springframework.org/schema/context"
xmlns:cxf = "http://cxf.apache.org/core"
xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:property-placeholder location = "classpath:application.properties"/>
<bean id = "messagesSource"
class = "org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name = "basenames">
<list>
<value>file:${config.monitor.dir}/${application.messages.file.name}
</value>
</list>
</property>
<property name = "cacheSeconds" value = "30" />
<property name = "defaultEncoding" value = "UTF-8" />
</bean>
<bean id = "messages"
class = "com.project.microservices.sampleproject.config.Messages"
scope = "application">
<property name = "messagesSource" ref = "messagesSource" />
</bean>
<jaxws:client id = "sampleClient" serviceClass = "com.sample.wsdl.sampleInq"
address = "${sample_endpoint}">
<jaxws:inInterceptors>
<bean class = "org.apache.cxf.interceptor.LoggingInInterceptor" />
<!-- <ref bean = "loggingInInterceptor" /> -->
</jaxws:inInterceptors>
<jaxws:outInterceptors>
<bean class = "org.apache.cxf.interceptor.LoggingOutInterceptor" />
<!-- <ref bean = "loggingOutInterceptor" /> -->
<bean class = "org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
<constructor-arg>
<map>
<entry key = "action" value = "UsernameToken" />
<entry key = "user" value = "website" />
<entry key = "user" value = "website" />
<entry key = "passwordType" value = "PasswordText" />
<entry key = "passwordCallbackRef" value-ref = "myPasswordCallback" />
</map>
</constructor-arg>
</bean>
</jaxws:outInterceptors>
</jaxws:client>
основной класс
@SpringBootApplication
public class SampleApplication extends SpringBootServletInitializer implements WebApplicationInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SampleApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(SampleApplication.class, args);
}
}
также одна точка, приложение может разрешить значение file: $ {config.monitor.dir} / $ {application.messages.file.name} в корневом контексте, но не в адресе конечной точки. что мне здесь не хватает? любезно помогите. я использую загрузочную версию 1.5.17
обновил вопрос с дополнительным блоком кода. пожалуйста, проверьте.
код вашего весеннего приложения, у которого есть метод main (String args [])?
@clevertension я добавил основной класс .. пожалуйста, проверьте один раз
попробуйте удалить <context: property-placeholder ... в вашем xml, весенняя загрузка автоматически прочитает эти свойства
изначально <context: property-placeholder не был назначен .. все же boot не выбрал свойство .. однако, поскольку я заменил заполнитель на # {environment ['sample_endpoint']}, он начал работать. знаете ли вы причину, по которой это выражение EL подобрано, но не конфигурация заполнителя? в любом случае большое спасибо за изучение вопроса
пожалуйста, вставьте больше кода, например: ваше приложение весенней загрузки и структура вашего проекта