Здесь мало путаницы. Blaze делает следующее:
Реализует формат AMF (это собственный формат Flash для сериализации объектов Flash). Так что он знает, как писать и читать объекты Flash.
Реализует некоторые расширенные функциональные возможности, необходимые для среды Flex (что на самом деле плохо, потому что она плохо написана и вам никогда не нужна, но это отдельная история). Например, он предоставляет ряд классов для имитации своих аналогов Flex в Java, а на стороне Flex он имитирует карты, деревья и т. Д. (Никогда даже не пытайтесь использовать это).
Создает специальный обработчик (и), который будет загружаться вашим веб-сервером (Tomcat, JBoss и т. Д.) И обрабатывать входящее соединение из Flash. Этот обработчик создается для каждой сессии - что бы это ни значило в вашем контексте. Этот обработчик также известен как FlexHandler (так обычно выглядит в файлах конфигурации).
Чего не делает Blaze:
Он не генерирует исходные файлы (источники ценностных объектов не генерируются - вы должны сделать это самостоятельно). Однако у него есть некоторые часто используемые типы - все числовые типы, строки, логические значения, некоторые коллекции и т. Д.
Не влияет на существующий код и не интегрируется в Flash Builder. Программа, которая делает это, называется Fiber, она предоставляется Adobe (тот же источник), но это совершенно другая вещь, это проприетарный продукт, она преследует другие цели (она может генерировать код для языков, отличных от Java, например).
Fiber - это в основном экспериментальный продукт, он был представлен в Flash Builder 4 (то есть около года назад), и в настоящее время он чрезвычайно сырой. В основном это полезно только в качестве иллюстрации или подтверждения концепции, но оно не было проверено в полевых условиях (и трудно найти добровольцев:)
remoting-config.xml не является каким-либо особым именем, однако, в силу примера, из которого скопировано много лотов, имя распознается как часть services-config.xml (опять же, имя , не имеет особого значения и может быть изменено, однако обычно оно называется этим именем). Эти файлы имеют двойное назначение. Когда приложение Flex скомпилировано, эти файлы могут использоваться компилятором Flex для создания некоторых настроек по умолчанию для RemoteObject (вы, вероятно, не хотите делать это таким образом, если вы действительно не уверены в том, что делаете, но даже тогда Вы, вероятно, не хотели бы делать это таким образом ...). С другой стороны, эти параметры используются FlexHandler (упомянутым выше), чтобы узнать, куда следует ожидать подключения клиента Flash. Последнее является особенно трудной темой, потому что невозможно отладить код Blaze в здравом уме, и очень трудно понять, что именно является базовым URL и т. Д. К счастью для вас, вы можете заменить эту абракадабру: <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf"
на что-то более осознанное как <endpoint url="http://server-name/gateway"
(то есть нет необходимости искать значения server.name
и server.port
- действительно очень трудно найти, где они прячутся.
Классы, сгенерированные Fiber (EntityMetadata, _SuperXxx и т. Д.), В конечном итоге вредны. Это попытка отразить на Java-коде и привить некоторую похожую логику в код AS3. Увы, люди, которые написали это, не имели ни малейшего представления о том, как работает AS3 - так что там происходит чистое безумие.
Существуют определенные правила при переводе объекта значения Java во Flash:
На любой стороне вы можете добавить дополнительные свойства, которые не существуют на другой стороне. Blaze не будет заполнять их (очевидно), но свойства будут существовать и будут доступны. Недостаток - вы получите кучу рутнимских ошибок (подавленных) с обеих сторон. Чтобы избежать этого, на стороне AS3 вы можете пометить нежелательное свойство как [Transient]
. Но подумайте дважды, прежде чем сделать это - это признак плохого дизайна. В идеале вам это не нужно. Я не знаю, что такое Java-аналог Transient.
Вы не можете иметь свойство с тем же именем, но с другим типом - ошибки такого рода не подавляются.
Традиционно для Java свойства логического типа называются isSomething
- для Blaze вам придется сделать исключение или назвать их (get|set)IsSomething
, если вы настаиваете ...
Объекты значений создаются Blaze на стороне Java, когда он вызывает функции Java, предназначенные для обработки сервисов. Они, очевидно, появляются в качестве аргументов для обработчиков. Объекты значений создаются на стороне Flash самим проигрывателем Flash - это создает определенные проблемы, такие как - нет способа передать перечислители - он все равно попытается вызвать конструктор класса AS3. Не допускаются аргументы конструктора не по умолчанию.
Когда вы подключаетесь к сервису во Flash Builder - не делайте этого. Никто на самом деле не знает, что именно вы делаете. Код является частной собственностью, и никаких обещаний о замораживании функций и т. Д. Сделано не было. На сегодняшний день для того, кто может программировать, не используя щелчок мыши, на самом деле гораздо проще на самом деле написать программный код, чем делать это пошаговым способом мастера.
Blaze генерирует только объекты-значения во время выполнения - вы можете быть почти уверены в этом. Это предсказуемо, и если произойдут серьезные изменения, вы обязательно будете уведомлены :) Blaze не генерирует исходный код.