Я пытаюсь развернуть проект SpringBoot на Weblogic 12c.Согласно этой весенней статье я отредактировал свой класс SpringBootApplication для реализации интерфейса WebApplicationInitializer.
Я удалил следующие строки из POM
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.dependency.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
Поскольку нет необходимости переупаковывать в исполняемый архив.
Я добавил ниже:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
Поскольку я хочу упаковать приложение в файл WAR, и у меня нет web.xml (я использую конфигурацию на основе аннотаций), поэтому я нене хочу, чтобы упаковка потерпела неудачу.
Кроме того, я добавил ниже, чтобы установить упаковку на WAR:
<packaging>war</packaging>
Пока все хорошо.Я делаю mvn clean install , и мой WAR-пакет готов со всеми зависимостями в виде JAR-файлов внутри WAR-архива моего веб-приложения.
Когда я пытаюсь развернуть этот файл войны, я получаю эту ошибку:
java.io.FileNotFoundException: Не удалось открыть ресурс ServletContext [/myfile.properties] Не удалось открыть ресурс ServletContext[/myfile.properties]
Я проверяю, был ли упомянутый файл свойств в пакете и был ли он внутри одного из JAR-файлов в файле WAR.
Это структура файла JAR:
META-INF
com
myfile.properties
Таким образом, файл свойств находится в корне архива JAR, как и ожидалось.
В этом архиве JAR одинклассы пытаются загрузить файл свойств, используя аннотацию @ PropertySource , как показано ниже:
@Configuration
@PropertySource("myfile.properties")
public class MyConfigClassForThisApp{
}
В другом классе значения читаются следующим образом:
@Value("${some.key}")
private String keyValue;
Я понимаю, что путь к классам WebLogic отличается от пути к классам Tomcat.Итак, я думаю, что мне нужно настроить путь к классам WebLogic, чтобы увидеть этот файл свойств.Как я могу это сделать?
ИЛИ возможно, мне следует изменить способ обращения к этому файлу свойств, и вместо использования аннотации @PropertySource я должен сделать что-то вроде:
this.getClass().getClassLoader().getResourceAsStream()
и обернуть файл свойств в Свойства класс, затем прочитать значения?
Обратите внимание, что я хотел бы избежать изменения кода, когда я могу.Как лучше всего сделать так, чтобы сервер WebLogic увидел мой класс конфигурации с как можно меньшим количеством изменений кода / конфигурации?Кроме того, в моей WAR есть другие JAR-файлы, и многие из них имеют такие файлы свойств, как этот.Какое бы решение я ни предложил, оно будет применяться несколько раз для других файлов свойств внутри других JAR-файлов.
Примечание. Я развертываю приложение в тестовой среде на AdminServer.
Примечание. Я поместил файлы свойств в% WEBLOGIC_HOME% / user_projects / domains / MYDOMAIN, как указано здесь , это не сработало.