#spring #web-applications #maven #websphere #rad
#весна #веб-приложения #maven #websphere #рад
Вопрос:
У меня есть веб-приложение на RAD 7.5. Я создаю приложение с использованием Maven и развертываю на WebSphere 6.1.
Часть моего web.xml является:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:services.xml</param-value>
</context-param>
Это единственное место, на которое я ссылаюсь services.xml .
Мой services.xml находится в папке
FruitApplication/src/main/resources/services.xml
После сборки с помощью maven, services.xml находится по следующему пути в целевой папке
target/FruitApplication-1.0.0/WEB-INF/classes/services.xml
При развертывании я постоянно получаю указанную ниже ошибку. Однако при создании приложения два-три раза оно исчезает само по себе, а затем снова появляется случайно.
Какова фактическая причина этой ошибки? Как устранить эту ошибку?
Верхняя часть моего services.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:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">
Здесь что-то нужно изменить???
Ниже приведен полный pom.xml Я использую для «maven-install»:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>FruitApplication</groupId>
<artifactId>FruitApplication</artifactId>
<packaging>war</packaging>
<version>1.0.0</version>
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.0.1</version>
<configuration>
<archive>
<manifestFile>
src/main/webapp/META-INF/MANIFEST.MF
</manifestFile>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
... dependencies here ...
</dependencies>
</project>
Я уже попробовал все три нижеприведенных варианта:
<param-value>classpath:services.xml</param-value>
<param-value>classpath:/services.xml</param-value>
<param-value>WEB-INF/classes/services.xml</param-value>
Как я развертываю:
Я удаляю приложение с сервера, щелкнув правой кнопкой мыши на сервере и «добавить или удалить приложения»
Я выполняю запуск как «maven-clean», а затем запускаю как «maven-install» в приложении и снова добавляю приложение, щелкнув правой кнопкой мыши на сервере и «добавить или удалить приложения»
Комментарии:
1. Когда вы получаете эту ошибку, проверяете ли вы файл WAR, чтобы увидеть, действительно ли файл находится там, где вы его ожидаете?
2. Как вы развертываете? Просто удаление сгенерированной maven войны в контейнере? Можете ли вы включить свою часть build-> resources вашего pom в вопрос?
3. Вы получаете ошибку в RAD, Websphere или обоих? Как предложил @smp7d, используйте этап ресурсов и укажите путь для копирования services.xml к явному каталогу WEB-INF/classes и WEB-INF. Хотя WEB-INF отсутствует в classpath, попробуйте.
4. Ошибка возникает после того, как я добавляю приложение на сервер и когда оно развертывается сервером. Поэтому я думаю, что это будет ошибка websphere … верно?
Ответ №1:
Вы пробовали classpath:/services.xml
? Начальная косая черта означает извлечение ресурса из корня пути к классу. Ожидается, что без него файл будет находиться в пакете любого класса, который его загружает (что, я признаю, я не знаю, что это будет в данном случае).
Ответ №2:
- Выберите проект, в котором существуют исходные файлы.Щелкните правой кнопкой мыши — Путь сборки — настройка пути сборки — источники -Добавить папку — добавьте папку, в которой существует ваш файл ресурсов.Это добавило бы папку к вашему пути к классу.
- Если указанный выше проект / jar является частью другого WAR / EAR, выберите этот WAR и / или EAR — properties — j2ee module dependecies и выберите указанный выше проект, чтобы его добавили в путь сборки. Перезапустите сервер.
Ответ №3:
Выясните, является ли его Websphere / RAD или проблема с приложением?
Сначала создайте файл war и поместите его в контейнер Tomcat и проверьте, по-прежнему ли вы видите ошибку. 1. Если вы видите, затем скопируйте services.xml перейдите в каталог WEB-INF и WEB-INF / classes и посмотрите, работает ли это. 2. Также проверьте системную переменную среды CLASSPATH, system CLASSPATH может переопределить путь к классу вашего приложения.
Если с Tomcat все в порядке, есть что-то специфичное для Websphere / RAD: 3. Проверьте среду websphere, я помню, что в websphere есть какая-то опция, в которой вы можете установить / переопределить / префикс пути к классу.