| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Клиент работает только из-под NetBeans |
| Автор: KazOFF 19.8.2010, 10:15 | ||||
| Имеются Glassfish 3.0.1 и NetBeans 6.9. Я сделал простой примерчик HelloWorld, и отдельный клиент на на JavaSE.
Если запускать клиент в NetBeans то всё хорошо работает, но если запустить отдельно JAR файл то выдается следующая ошибка
В список библиотек добавлены gf-client.jar и собственно JAR с EJB. Так же наткнулся на данную проблему, которая решалась полным импортом библиотк из glassfish/module, но это не помогло. Как можно решить данную проблему? |
| Автор: Skipy 19.8.2010, 10:38 |
| Решается только одним способом - правильным формированием classpath. В NB нужные классы есть, вне него - нет. |
| Автор: KazOFF 19.8.2010, 13:49 | ||
Класс com.sun.enterprise.naming.SerialInitContextFactory находится в файле glassfish-naming.jar, но даже его добавление не помогает. Выводит ошибку
Я даже не знаю где искать эти классы, которые требуются для выполнения. По FAQ который на сайте глассфиша нужен только gf-client. Но на деле оказалось иначе. |
| Автор: Kircul 19.8.2010, 14:13 |
| Может попробовать appserv-rt.jar? http://www.jarfinder.com/index.php/java/info/com.sun.enterprise.naming.SerialInitContextFactory, http://forums.sun.com/thread.jspa?threadID=426416. |
| Автор: KazOFF 19.8.2010, 14:26 |
| Пробовал добавлять даже все jar файлы которые есть в glassfish. appserv-rt нужен для glassfish v2 (https://glassfish.dev.java.net/javaee5/ejb/EJB_FAQ.html#StandaloneRemoteEJB) |
| Автор: pointer82 13.9.2010, 11:49 |
| была та же ошибка, излечилось именно так, как сказано на сайте Glassfish https://glassfish.dev.java.net/javaee5/ejb/EJB_FAQ.html#StandaloneRemoteEJB "Include $GLASSFISH_HOME/modules/gf-client.jar in the client's classpath". Т.е. должна быть указана в classpath ссылка именно на gf-client.jar, лежащий в папке гласфиша. Если копируем куда-то gf-client.jar и указываем его, не работает. У меня сейчас сервер и standalone-приложение на одной машине, и я просто указал путь к gf-client.jar, но как быть если клиентское приложение на другой машине, нежели сервер? Есть другой способ корректной работы удаленно с JNDI сервера Glassfish? |
| Автор: Skipy 13.9.2010, 12:33 | ||||
Это означает, что скопировали не все библиотеки, которые требуются gf-client.jar. В его манифесте указано, что ему нужно:
P.S. Вы все еще хотите его использовать? |
| Автор: pointer82 13.9.2010, 14:43 |
| поэтому я и задал вопрос, можно ли как-то иначе использовать JNDI в Glassfish удаленно? |
| Автор: eros2 13.9.2010, 22:51 |
| На клиенте должны быть все необходимые клиентские либы. И именно той версии, что и на сервере. В JBoss точно так же. Естественно, только для вызова EJB все либы не нужны. Достаточно просто вычислить нужные, если добавить все, проверить что программа работает, а потом убирать по одной и проверять работоспособность. Таким образом убрать ненужные. )) |
| Автор: Skipy 14.9.2010, 09:21 | ||
Их там почти 200. Вы после каждой убранной библиотеки будете проводить полнообъемное тестирование? А иначе никак - библиотека может быть задействована в каком-то хитрозаковыристом случае. |
| Автор: eros2 14.9.2010, 10:02 | ||||
В JBoss-е 5.1 их всего 93 )) Реально нужно для работы при использовании EJB3, JMS, Hibernate - примерно 36. Хитрозаковыристые случаи обычно вылезают в процессе разработки. |
| Автор: spruce 6.1.2011, 10:52 | ||||||
Скажите, получалось ли у вас запустить приложение хотя бы из среды, только указав в свойстве адрес другого сервера, не localhost: props.setProperty("org.omg.CORBA.ORBInitialHost", "another_host"); ? |
| Автор: necrom 23.2.2011, 18:07 | ||||
| У меня получилось ) На сервере мапишь глобальный JNDI
На клиенте прокатываешь следующее port для nix 3700 Это удалённый метод AuthorizationSessionRemote который используется на сервере.
Только вот, запустить удалённо клиент не вышло ( |
| Автор: COVD 23.2.2011, 23:37 |
| Просветите, о чем весь этот ужас, что такое "клиент"? Это два сервера, один обращается к другому и считается в данной ситуации клиентом? Или это, например, апплет? |
| Автор: Temdegon 24.2.2011, 06:55 | ||||
Нее, это J2EE Application Client. Дектоп приложение, работающее с J2EE сервером. http://java.sun.com/developer/technicalArticles/J2EE/appclient/
Посмотри в админке сервера, какие сетевые интерфейсы он слушает. Вроде по-дефолту он только на локалхост вешается, нужно дописать сетевой айпишник. Я делал такую хрень по Netbeans-туториалам, и у меня точно все работало. И на локалхосте, и с другого компа, и через инет, и поверх VPN-Hamachi. Причем запускал и netbeans, и как стэндэлон, и прямо с сервера через Java WebStart. Точно помню, что сразу нифига не работало, и я долго метался между GF3 и GF2. Вроде их примеры на GF3 не работали, а в GF2 какой-то затык был у меня с WebStart. |
| Автор: Ihavok 4.4.2011, 15:08 | ||||||||
Так всё-таки... Какое решение то??? Я в classpath добавляю путь к gf-client.jar А у меня ошибка при выполнении
|