Я хочу создать JAVA EE-приложение (EAR), который не только обеспечивает веб-сервис (ВОЙНА) или прямой запрос JMS (EJB), но я хотел бы также принять запрос сокета (например, пакет UDP).
Я попытался писать слушателю с java.net. DatagramSocket, позволяя этому работать как отдельный процесс и перенаправление запроса к моему приложению EAR.
вопрос.. как я могу встроить такого слушателя сокета в свой Java EE (EAR) applcation беспрепятственно?
спасибо.
Теперь, когда вы знаете разницу между «= =» и «=», позвольте мне высказать некоторые слова предосторожности. Несмотря на то, что «= =» используется в качестве стандартного теста равенства между сопоставимыми переменными и «=», используемыми в качестве внутреннего назначения по типу, следующая ошибка программирования является довольно распространенной.
В приведенном ниже примере и аналогичных кодах «» = «» называется условным оператором «» Always true «».
#include<stdio.h>
int main()
{
int i = 10, j = 20;
if ( i = j )
printf("Equal\n");
else
printf("NOT Equal\n");
return 0;
}
Таким образом, слово предостережения - «Никогда не используйте ' =
' в , если
высказываний, если в вашем сознании нет чего-то злого»
C # 4 не разрешит написанный код, поскольку метод AddCars
ожидает IEnumerable < Car >
, реализующий IPainting
. Это не означает, что вы можете пройти любой класс, реализующий IPainting
(например, вы можете иметь класс Bike: IPainting
, который не имеет никакого отношения к классу Car
. Однако это позволит другим путям вокруг; при наличии коллекции void AddCars (IEnumerable < IPainting >)
можно передать методу List < Car >
.
До тех пор нужно будет придерживаться передачи последовательностей Car
методу, используя некоторый механизм литья (например, картины .Cast < Car > ()
, предложенный в других ответах).
Правильный подход заключается в создании адаптера JCA для этого. Адаптер JCA может использоваться для подключения исходящего или входящего . Вы можете начать работу с потоком или запланировать работу в адаптере JCA. Входящее подключение от адаптера JCA к EJB выполняется с использованием пользовательского компонента, управляемого сообщениями.
Можно даже начать транзакцию с соединителя JCA, чтобы выполнить транзакцию доставки сообщения/пакета в EJB. JCA является частью спецификаций Java EE и поддерживается всеми серверами приложений.
Другой подход (но не соответствующий спецификации) заключается в запуске потока, который прослушивает сокет от ServletContextListener
. Поток будет запущен на веб-уровне, и вы можете вызвать EJB как обычно. Инъекция зависимостей не будет работать, но поиск JNDI все равно должен быть в порядке.
На самом деле, все вы не правы. Вы можете отладить несколько программ одновременно.
Я не знаю, когда это было впервые реализовано, скорее всего, когда группы проекта были добавлены в Delphi, но я использую это, так как «Forewer», и я уверен, что по крайней мере Delphi 2005 был способен делать Это.
Короче говоря:
Вуаля! У вас есть две программы, работающие под отладчиком. Вы можете установить точки останова в любом из них, и они будут работать просто файл.
Этот подход работает с любым количеством программ. (Там могут быть некоторые жесткозедированные ограничения, но я никогда не бегал в них.)
-121--3796777-Все должно контролироваться контейнером, потому что это единственный способ иметь масштабирующую приложение с использованием Java EE.
Несколько вариантов:
Реализуйте разъем (JCA) Пример здесь: http://www.theserverside.com/tt/articles/article.tss?l=j2ee1_4 , вероятно, Лучший способ, если у вас есть существующие клиенты.
Используйте очереди сообщений Java
. Отношения между этими методами обсуждаются здесь http://java.sun.com/products/jms/faq.html#Relship_ejbs
Написать внешний сервер, который хранит запросы в База данных (без поддержки TX)
Если у вас есть только один сервер, и кажется слишком много накладных расходов, вы можете игнорировать эти аспекты. Но если вам нужны транзакции позже или дополнительные узлы, эта часть должна быть переработана.