2010-10-03 4 views
1

Я начинаю новый проект предприятия и использую Glassfish 3 в качестве сервера приложений и NetBeans 6.9 как IDE. У меня есть EJBs, который я хочу получить удаленно с рабочего стола Swing. AFAIK существует два варианта: либо используйте обычный JNDI, либо запустите приложение Swing в контейнере приложения-клиента и используйте анкеты @EJB. Я успешно выполнил первый вариант, но мне пришлось скопировать все библиотеки glassfish для удовлетворения зависимостей (около 50 МБ, которых я не считаю нормальным). Теперь я попробую второй вариант. В NetBeans я создаю новый проект Enterprise Application Client, добавьте проект EJB в качестве зависимости и нажмите пробег. Я получаю следующее исключение: Sniffers with type [ejb] and type [appclient] should not claim the archive at the same time. Теперь, если я удаляю флажок package, рядом с проектом EJB в свойствах проекта клиента приложения, я получаю другое исключение из моего удаленного интерфейса ClassNotFound.Удаленный прикладной клиент EJB

Я чувствую себя застрявшим :(Могли бы некоторые более опытные ребята сказать мне, как они получают доступ к своим EJB удаленно, используя Glassfish 3? Как я уже писал выше, мне удалось с первым вариантом, но 50 МБ слишком много в моем мнение для простого клиента

Edit:.? Какой подход вы бы выбрали для развертывания и удаленного доступа от клиента, если у вас есть бизнес-логику в ejbs на удаленном сервере

Спасибо за любые предложения у вас есть!

Желаю вам всего наилучшего, Петар

+0

Вы загрузили полную версию или только веб-профиль? «Сниффер» является частью контейнера из стеклянной рыбы, который определяет, какой контейнер следует запускать при развертывании файла jar. Он анализирует файл jar для поиска скачанных файлов, таких как web.xml и т. Д. Так как снифер жалуется на невозможность найти контейнер ejb, я предполагаю, что вы можете загрузить веб-профиль. Попытайтесь получить полную платформу –

+0

Я загрузил полную версию, и я думаю, что клиентский контейнер жалуется, потому что он находит две вещи - ejb и клиент приложения, и он не знает, что нужно запускать. Но как я могу ссылаться на мой проект ejb? !!! –

+0

@Chuk Также см. Мое редактирование. –

ответ

1

Я думаю, что лучший подход в вашем случае - создать сервлет (или какой-либо другой легкий простой компонент) на вашем сервере и заставить этого парня поговорить с вашим EJB. Если вы выберете этот случай, вы изолируете свою связь клиент/сервер и реализацию своей бизнес-логики.

+0

Спасибо за ответ , Но я выбрал EJB, поэтому удаленное общение проще через четко определенный интерфейс @Remote. Также у меня не будет веб-графического интерфейса, зачем создавать сервлет и использовать HTTP-связь? Разве это не слишком низкий уровень и искусственный? –

+0

Да, это так. Но если вы хотите избежать всех зависимостей сервера приложений, я думаю, что это может быть подход. Конечно, лучший способ - иметь истинную связь EJB со всеми зависимостями в вашем клиентском приложении. В некоторых случаях это может быть проблемой (у меня есть клиентское приложение WebStart с 87 МБ, но наш клиент использует его в частной сети, поэтому его не проблема здесь). –