Я недавно установил экземпляр микрозлака SpringSource CloudFoundry и пытаюсь просмотреть их довольно краткий пример обмена сообщениями, используя RabbitMQ, найденный здесь (с кодом):
http://support.cloudfoundry.com/entries/20322602-getting-started-with-the-rabbitmq-service-from-a-spring-application
Публично работающий экземпляр приложения предоставляется здесь:
http://rabbit -simple.cloudfoundry.com
Когда я пытаюсь это сделать, среда настраивается правильно, код строится, развертывается (с использованием инструментов командной строки vmc) и без проблем связывается со службой rabbitmq. Вот вывод консоли из запущенных «приложений vmc»:
Macintosh-2:target wlaprise$ vmc push rabbit-simple
Would you like to deploy from the current directory? [Yn]: y
Application Deployed URL ["rabbit-simple.c3works.cloudfoundry.me"]:
Detected a Java SpringSource Spring Application, is this correct? [Yn]: y
Memory Reservation ("64M", "128M", "256M", "512M", "1G") ["512M"]:
Creating Application: OK
Would you like to bind any services to 'rabbit-simple'? [yN]: y
The following system services are available
1: mongodb
2: mysql
3: postgresql
4: rabbitmq
5: redis
Please select one you wish to provision: 4
Specify the name of the service ["rabbitmq-fad62"]:
Creating Service: OK
Binding Service [rabbitmq-fad62]: OK
Uploading Application:
Checking for available resources: OK
Processing resources: OK
Packing application: OK
Uploading (2K): OK
Push Status: OK
Staging Application: OK
Starting Application: OK
Macintosh-2:target wlaprise$ vmc apps
+---------------+----+---------+---------------------------------------+----------------+
| Application | # | Health | URLS | Services |
+---------------+----+---------+---------------------------------------+----------------+
| rabbit-simple | 1 | RUNNING | rabbit-simple.c3works.cloudfoundry.me | rabbitmq-fad62 |
+---------------+----+---------+---------------------------------------+----------------+
Когда я пытаюсь запустить приложение из браузера, оно изначально отображает форму ввода правильно, но когда я ввожу сообщение и нажимаю «Опубликовать», я получаю эту ошибку 500:
Exception--------
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.springframework.amqp.core.MessageProperties.getReplyTo()Lorg/springframework/amqp/core/Address;
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:839)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.lang.NoSuchMethodError: org.springframework.amqp.core.MessageProperties.getReplyTo()Lorg/springframework/amqp/core/Address;
org.springframework.amqp.rabbit.support.DefaultMessagePropertiesConverter.fromMessageProperties(DefaultMessagePropertiesConverter.java:120)
org.springframework.amqp.rabbit.core.RabbitTemplate.doSend(RabbitTemplate.java:365)
org.springframework.amqp.rabbit.core.RabbitTemplate$1.doInRabbit(RabbitTemplate.java:164)
org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:330)
org.springframework.amqp.rabbit.core.RabbitTemplate.send(RabbitTemplate.java:162)
org.springframework.amqp.rabbit.core.RabbitTemplate.convertAndSend(RabbitTemplate.java:179)
org.springframework.amqp.rabbit.core.RabbitTemplate.convertAndSend(RabbitTemplate.java:175)
com.c3works.msg.HomeController.publish(HomeController.java:25)
Кто-нибудь работал успешно и знает, что я могу делать неправильно (проблема RabbitMQ, проблема CloudFoundry, моя собственная проблема: 0)?
Единственное, что я сделал, что не было идентично учебному коду SpringSource, это изменил строку возврата в HomeController с:
return "WEB-INF / views / home.jsp";
в
«Home», чтобы соответствовать способу установки viewResolver в файле spring-context.xml (это было необходимо даже для правильного отображения формы ввода).
Спасибо.