WebLogic 12c - SpringBoot - java.io.FileNotFoundException: не удалось открыть ресурс ServletContext - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь развернуть проект 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, как указано здесь , это не сработало.

...