2013-08-21 2 views
1

У меня проблема с развертыванием веб-приложения Java Enterprise с веб-модулем EJB и JSF. Application строит успешно, но когда он развертывается на Glassfish 4 сервера, я получаю это исключениеGlassfish javax.ejb.EJBException

javax.ejb.EJBException 
at com.sun.ejb.containers.EJBContainerTransactionManager.processSystemException(EJBContainerTransactionManager.java:748) 
at com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:698) 
at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:503) 
at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4475) 
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2009) 
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1979) 
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220) 
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88) 
at com.sun.proxy.$Proxy325.vratiSveRelacije(Unknown Source) 
at kontroler.KontrolerPrevoznika.vratiSveRelacije(KontrolerPrevoznika.java:275) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at javax.el.ELUtil.invokeMethod(ELUtil.java:326) 
at javax.el.BeanELResolver.invoke(BeanELResolver.java:536) 
at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:256) 
at com.sun.el.parser.AstValue.getValue(AstValue.java:136) 
at com.sun.el.parser.AstValue.getValue(AstValue.java:204) 

Любые предложения?

ответ

1

Я недавно работал с EJB, и я могу сказать вам проверить JNDI, который вы настраиваете для подключения к EJB.

Properties props = new Properties(); 
props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory"); 
props.setProperty("org.omg.CORBA.ORBInitialHost", "*hostname*"); 
props.setProperty("org.omg.CORBA.ORBInitialPort", "*3700*");//default port 
InitialContext ctx = new InitialContext(props); 
FirstBeanRemote bean = (FirstBeanRemote) ctx.lookup("java:global/*EARNAME/EJBJARNAME*/FirstBean!*fullyqualifiedpackage*.FirstBeanRemote"); 
  1. Самое главное, чтобы проверить, если вы устанавливаете ctx.lookup аргумент.

  2. Проверьте, правильно ли установлена ​​эмблема EJB.

  3. Я не знаю Если его ошибка, но в Затмении и Glassfish, EJB-не может иметь внешние банки

+0

Извините, если это глупый вопрос, но где этот код должен быть? Я действительно начинаю с java ee –

+1

Ну, я полагаю, у вас есть два проекта: клиент или потребитель (может быть веб-проект или настольное приложение) и проект EJB, этот код должен быть на стороне клиента или потребителя. Зачем? Поскольку этот код ищет соединение, находящееся за пределами клиента – Jessai

+0

У меня есть модули JSF и EJB внутри Enterprise Application, но я не знаю, где разместить такой код. Должно ли оно находиться в файлах конфигурации или в исходных пакетах или в другом месте. –

0

Я решил эту проблему. Мое исключение выглядит:

javax.ejb.EJBException 
     at com.sun.ejb.containers.EJBContainerTransactionManager.processSystemException(EJBContainerTransactionManager.java:748) 
     at com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:698) 
     at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:503) 
     at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4566) 

И что, потому что мой метод EJB генерирует исключение, объявленную в другом .jar файл, используемый приложением в качестве внешней библиотеки и что .jar библиотеки в domain1/Библиотека каталога.

Попробуйте выбросить еще одно исключение из метода EJB, и вы увидите результат.

+0

У меня такая же ошибка. Можете ли вы, пожалуйста, сказать мне, как решить эту ошибку. –