Spring Boot на Heroku Integration.xml не найден

Я пытаюсь развернуть приложение Spring Boot на Heroku, следуя этому руководству: http://codingricky.com/booting-spring-boot-into-heroku/ (спасибо Рики Йим)

Это кажется довольно простым, но мое приложение включает integration.xml, как того требует зависимость spring-messaging:

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-messaging</artifactId>
    </dependency>

При этом я не использую Spring Integration только веб-сокеты / обмен сообщениями STOMP. Так что зависимость нужна.

Я получаю простую не найденную ошибку, когда приложение пытается загрузиться:

Caused by: java.io.FileNotFoundException: class path resource [integration.xml] cannot be opened because it does not exist

Локально integration.xml находится в каталоге /src/main/resource и находится нормально, когда я run as -> spring boot из Eclipse.

У меня также есть одна страница html и несколько файлов javascript для отладки веб-сокетов / обмена сообщениями STOMP, как в руководстве здесь: https://spring.io/guides/gs/messaging-stomp-websocket/

Что мне нужно изменить, чтобы приложение могло найти эти файлы в каталоге /resource при развертывании в виде jar?


person jordan.baucke    schedule 30.01.2014    source источник
comment
Примечание: метод main() в этом блоге можно заменить на server.port=${PORT:8080} в application.properties.   -  person Dave Syer    schedule 30.01.2014


Ответы (1)


Если вы создаете свой JAR с помощью Maven и настроек по умолчанию, вы должны обнаружить, что все из «src/main/resources» находится в корне JAR и, следовательно, в пути к классам, если вы запускаете с «java -jar». Я не знаю, как сборочный пакет Heroku запускает JAR (использует ли он «java -jar» или распаковывает его и делает что-то другое?), поэтому ответ может быть там.

Если вы можете запустить свой файл JAR локально, я ожидаю, что он будет работать на PaaS, но кто знает, что они могут делать с ним во время выполнения.

Кстати, «spring-messaging» не требует какой-либо конфигурации XML, поэтому вам, вероятно, следует изучить это и попытаться понять, откуда на самом деле исходит сообщение об ошибке. Если вы поделитесь своим проектом на github, будет намного проще предположить, что вы могли сделать неправильно.

person Dave Syer    schedule 30.01.2014
comment
Спасибо Дэйв! Я подумал, что это странно - я скопировал все в новый проект после того, как удалил предыдущую попытку использовать spring-integration для чего-то, но это все равно произошло. - person jordan.baucke; 31.01.2014
comment
Я загрузил пример complete на Github: github.com/jordanbaucke/spring-boot- websocket-heroku в нем нет ошибки integration.xml, поэтому я могу использовать его в качестве основы и обойти это! только что отредактировал этот комментарий! Я неправильно напечатал ваше предложение из первоначального вопроса! Он находит порт и загружается! - person jordan.baucke; 31.01.2014
comment
Я обнаружил, что у меня есть ссылка на integration.xml в одном из моих файлов! - person jordan.baucke; 31.01.2014