Как развернуть appfuse на cloudfoundry или где-то еще?

Я хотел бы развернуть appfuse в cloudfoundry. Когда я запускаю эти команды unix:

mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-spring-archetype -DarchetypeVersion=2.2.1 -DgroupId=se.ova -DartifactId=artpage -DarchetypeRepository=http://oss.sonatype.org/content/repositories/appfuse
cd artpage
mvn clean install -Ppostgresql
vmc push
more ~/.vmc/crash

Я получаю это сообщение:

Time of crash:
  2013-02-12 11:24:26 +0100

CFoundry::AppInvalid: 300: Invalid application description

cfoundry-0.4.21/lib/cfoundry/v1/base.rb:113:in `handle_response'
cfoundry-0.4.21/lib/cfoundry/baseclient.rb:146:in `block in request_uri'
/usr/lib/ruby/1.9.1/net/http.rb:745:in `start'
cfoundry-0.4.21/lib/cfoundry/baseclient.rb:127:in `request_uri'
cfoundry-0.4.21/lib/cfoundry/baseclient.rb:48:in `request'
cfoundry-0.4.21/lib/cfoundry/baseclient.rb:44:in `request_path'
cfoundry-0.4.21/lib/cfoundry/baseclient.rb:193:in `request_with_options'
cfoundry-0.4.21/lib/cfoundry/baseclient.rb:205:in `post'
cfoundry-0.4.21/lib/cfoundry/v1/model_magic.rb:34:in `block (2 levels) in define_client_methods'
cfoundry-0.4.21/lib/cfoundry/v1/model.rb:72:in `create!'
vmc-0.4.7/lib/vmc/cli/app/push/create.rb:59:in `block in create_app'
interact-0.5.2/lib/interact/progress.rb:98:in `with_progress'
vmc-0.4.7/lib/vmc/cli/app/push/create.rb:58:in `create_app'
vmc-0.4.7/lib/vmc/cli/app/push.rb:95:in `setup_new_app'
vmc-0.4.7/lib/vmc/cli/app/push.rb:82:in `push'
mothership-0.3.5/lib/mothership/base.rb:61:in `run'
mothership-0.3.5/lib/mothership/command.rb:68:in `block in invoke'
manifests-vmc-plugin-0.4.19/lib/manifests-vmc-plugin/plugin.rb:113:in `call'
manifests-vmc-plugin-0.4.19/lib/manifests-vmc-plugin/plugin.rb:113:in `block (2 levels) in <class:Manifests>'
mothership-0.3.5/lib/mothership/callbacks.rb:74:in `with_filters'
manifests-vmc-plugin-0.4.19/lib/manifests-vmc-plugin/plugin.rb:112:in `block in <class:Manifests>'
mothership-0.3.5/lib/mothership/command.rb:78:in `instance_exec'
mothership-0.3.5/lib/mothership/command.rb:78:in `block (2 levels) in invoke'
mothership-0.3.5/lib/mothership/command.rb:82:in `instance_exec'
mothership-0.3.5/lib/mothership/command.rb:82:in `invoke'
mothership-0.3.5/lib/mothership/base.rb:50:in `execute'
vmc-0.4.7/lib/vmc/cli.rb:106:in `execute'
mothership-0.3.5/lib/mothership.rb:45:in `start'
vmc-0.4.7/bin/vmc:11:in `<top (required)>'
/usr/local/bin/vmc:23:in `load'
/usr/local/bin/vmc:23:in `<main>'

Кто-нибудь знает, что не так или как я могу развернуть appfuse на какой-либо другой PaaS? Я развернул roo-приложения в cloudfoundry, и они отлично работают, но у меня возникли трудности с дальнейшей разработкой roo-приложений и, например, с добавлением загрузки изображений и настройки электронной почты, поэтому я подумал, что appfuse будет проще, но мне нравится как-то развертывать его в службе PaaS.


person Hurve    schedule 12.02.2013    source источник


Ответы (2)


vmc push предполагает, что вы хотите выполнить развертывание из текущего каталога. Это не работает в вашем примере, потому что это не приложение результатов, а источники для него.

Либо

  • перейдите в каталог target/<the_exploded_app> и выполните vmc push
  • или используйте vmc push --path target/<the_exploded_app_or_the_dot_war>

это должно сделать это.

person ebottard    schedule 12.02.2013
comment
Спасибо за ваше предложение. Я помню об этом, но я все еще получаю ту же трассировку стека, когда делаю:vmc push --path target/artpage-1.0-SNAPSHOT.war На вопросы vmc, на которые я отвечаю: моя электронная почта, 1 экземпляр, spring и java7, 512 M. Я попробую с более простым приложением. Я действительно не понимаю часть привязки службы, но, думаю, мне следует прочитать больше... - person Hurve; 12.02.2013
comment
Действительно странно. К вашему сведению, привязка службы касается предоставления некоторого вида постоянства (например, MySQL или postgresql, я думаю, в вашем случае) и информирования вашего развернутого приложения об этом. В свою очередь, ваше приложение может подключаться к нему либо явно (утомительно), либо автоматически (в зависимости от вашего фреймворка приложения. Это поддерживают Spring, Node и RoR). Должен работать с appfuse. - person ebottard; 12.02.2013
comment
Итак, где мне ввести учетные данные dbms, если я выберу автоматическое решение? - person Hurve; 12.02.2013
comment
Вы не знаете. В этом-то и дело. Во время подготовки ваш единственный bean-компонент типа DataSource будет заменен тем, который знает, как подключиться к базе данных. Дополнительная информация здесь: docs.cloudfoundry.com/frameworks/java/spring/spring. html - person ebottard; 12.02.2013
comment
Теперь это работает немного лучше. Трассировка стека возникла из-за того, что я забыл имя приложения. Должно быть vmc push <worldwide unique appname> --path target/<the_exploded_app_or_the_dot_war>, чтобы приложение запустилось сейчас. Затем я привязал сервис и сохранил его, но когда он проверяет (имеется в виду запуск тестов?), он терпит неудачу, возможно, потому, что некоторые тесты пытаются использовать SMTP. - person Hurve; 12.02.2013
comment
Тем не менее, проблема все еще остается: когда я делаю vmc start artpage, он говорит «Запуск арт-страницы… ОК, проверка арт-страницы… СДАЛ». Это также происходит, когда я пытаюсь развернуть appfuse light, который, я думаю, не использует smtp. Когда я делаю vmc logs artpage, он показывает длинную трассировку стека для публикации здесь, включая эту информацию: вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка создания компонента с именем «sessionFactory», определенным в ресурсе пути к классу [applicationContext-dao.xml] : Ошибка вызова метода инициализации; вложенным исключением является org.hibernate.search.SearchException - person Hurve; 12.02.2013
comment
Файл applicationContext-dao.xml, похоже, не существует в appfuse, хотя на него есть ссылка в разделе context-param файла web.xml. Может быть, это проблема апфьюза? - person Hurve; 12.02.2013

Если вы посмотрите на первопричину, которая находится далеко внизу стека, вы увидите сообщение об ошибке:

Не удалось создать каталог индекса: /nonexistent/artpage-1.0-SNAPSHOT/index для индекса org.appfuse.model.User

Это означает, что нет разрешения на запись, так как индексация создавалась на диске. Вот хороший блог, который должен помочь вам в решении вашей проблемы:

http://appfuse.547863.n4.nabble.com/Подготовка-для-2-2-релиза-td4655656.html

Также помните, что созданные файлы будут существовать только до тех пор, пока работает экземпляр приложения.

person Ali Moghadam    schedule 12.02.2013