У меня очень большая проблема. Я написал большое приложение с использованием Flex3 / Tomcat / BlazeDS / Spring, которое очень хорошо работало при локальной разработке, прекрасно, когда я развертывал в обычной среде разработки, но затем очень часто отказывало при развертывании в нашей тестовой среде.
Похоже, что сбои происходят чаще всего, когда запрос удаленного взаимодействия занимает много времени (более 20 секунд). На моем dev-сервере ошибки случаются, но только когда запрос занимает очень много времени (более 45 секунд). Тем не менее, эта ошибка также иногда возникает мгновенно (отправьте запрос, и он немедленно завершится неудачей). Большинство ошибок также имеют статус HTTP: 502 (Bad Gateway), но некоторые просто говорят, что HTTP Failed.
Я не сделал ничего особенного с BlazeDS, кроме как поместить файл war в каталог webapps. Приложение доступно через https. Удаленные вызовы относятся к серверу только по «назначению». Серверы tomcat в наших экземплярах DEV и TEST имеют идентичные аргументы java (те же Xms и Xmx и т. Д.). Ниже приведены мои соответствующие файлы:
Услуги по-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
<services>
<default-channels>
<channel ref="my-secure-amf"/>
</default-channels>
</services>
<channels>
<channel-definition id="my-secure-amf" class="mx.messaging.channels.SecureAMFChannel">
<endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/amfsecure" class="flex.messaging.endpoints.SecureAMFEndpoint"/>
<properties>
<add-no-cache-headers>false</add-no-cache-headers>
</properties>
</channel-definition>
</channels>
<services-config>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
...
<servlet>
<servlet-name>spring-flex</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/flexContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-flex</servlet-name>
<url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>
</web-app>
flexContext.xml
<!--
I have component-scan tags here to scan my class files. The Controller I'm using for flex has an annotation on it to define it as a remote destination. Here it is:
@Controller
@RemotingDestination(value = "dest", channels="my-secure-amf")
public class FlexController {
-->
<bean id="flexExceptionTranslator" class="edu.liberty.zconduct.web.FlexExceptionTranslator" />
<flex:message-broker>
<flex:exception-translator ref="flexExceptionTranslator"/>
<!-- <flex:secured /> Had this previously, but it wasn't working then, either -->
</flex:message-broker>
Я близок к концу моей веревки. Ошибка - взломщик приложений. Пожалуйста, пожалуйста, помогите мне, если можете.
EDIT
Я переключился на http и все еще получаю ошибку. Tomcat сейчас говорит:
ВНИМАНИЕ: Ошибка при отправке конечного пакета
java.net.SocketException: сломанная труба
Я смотрю в своем журнале apache запрос jk_mod и вижу некоторую отладочную информацию, похожую на запрос, который я отправил, а затем следующее:
[отладка]
ajp_send_request :: jk_ajp_common.c
(1592): повторно отправить тело запроса (432)
[отладка]
jk_shutdown_socket :: jk_connect.c
(681): собирается отключить розетку 68
[отладка]
jk_shutdown_socket :: jk_connect.c
(732): выключите сокет 68 и прочитайте 0
протяженные байты
[информация]
ajp_connection_tcp_get_message :: jk_ajp_common.c
(1150): (myTestServer) не может получить
сообщение заголовка ответа от
tomcat, проблемы с сетью или tomcat
(xx.xx.xx.xx: xxxx) не работает (errno = 11)
[ошибка] ajp_get_reply :: jk_ajp_common.c
(1962): (myTestServer) Tomcat отключен
или отказался от подключения. Нет ответа
было отправлено клиенту (пока)
[info] ajp_service :: jk_ajp_common.c
(2447): (myTestServer) отправка запроса
коту не удалось (подлежит восстановлению),
(Попытка = 2)
[ошибка] ajp_service :: jk_ajp_common.c
(2466): (myTestServer) подключение к
кот не удался.
[отладка]
ajp_reset_endpoint :: jk_ajp_common.c
(743): (myTestServer) сброс
конечная точка с SD = 4294967295 (сокет
выключение)
[debug] ajp_done :: jk_ajp_common.c
(2905): пул соединений для рециркуляции
слот = 0 для рабочего myTestServer
[info] jk_handler :: mod_jk.c (2615):
Ошибка сервиса = 0 для
рабочий = myTestServer