IndoKnight, что идеально завернуть вам дал как Exception
семантика в рамках Java EE.. работа.
вот две единственные строки «bean provider», то есть вы и я, должны знать об исключениях в Java EE:
ваш bean полностью свободен для восстановления от любого типа исключения или ошибки, как вы считаете нужным, в отношении других ограничений, под которыми может находиться bean. Если вы оправились от исключения, то поздравляю-проблем нет anymore =)
соответствующим ограничением может быть, например, то, что» корпоративные компоненты, использующие демаркацию транзакций, управляемых контейнером, не должны использовать методы управления транзакциями, которые мешают границам демаркации транзакций контейнера», чтобы процитировать Java EE 7 учебник 48-2 страницы (вы хотите программно установить откат управляемой транзакции контейнера, используйте метод ejbcontext.setRollbackOnly()).
Вам также не рекомендуется, как и в любом типе приложения Java, обрабатывать Throwable
или Error
брошенный с очень низкого уровня. RuntimeException
теоретически считается в этой категории, поскольку он так лихо сигнализирует об «ошибке разработчика», которая похожа на» совершенно неожиданную», но мы все знаем, что это не так.
в основном, неожиданное исключение (исключения времени выполнения + другое дерьмо, которое мы предполагаем, происходит от кого-то другого) предполагается, что ваш код не может быть обработан и должен обрабатываться сервером. Сервер должен обрабатывать исключение» unhandleable» (посмотреть спецификация EJB 3.2, стр. 204), напечатав что-то об этом в журнале (я перейду к деталям немного позже!).
более конкретно..
вы спросили (И вот во что я верю или не верны):
все исключения приложений описанное выше должно быть брошено
непосредственно EJB клиенту?
да. и транзакция (если она активна) не должна откатываться, если вы явно не указываете, что она должна использовать атрибут отката ApplicationException
. Исключение Java-кода-это очень естественная вещь. Java EE не имеет намерения разрушать эту модель программирования. Так что вперед, бросьте проверенные исключения, как вам нравится, заставляя клиентов пытаться поймать те или отметьте исключения среды выполнения как исключения приложения и бросьте их тоже. Счастливого броска!
если системные исключения обернуты внутри javax.EJB-компонента.EJBException перед
бросая клиенту, затем javax.EJB-компонента.EJBException считаются
Системное Исключение?
да, но не по той причине, которую вы предоставляете. Чтобы быть ясным, нет типа SystemException. Это просто причудливая формулировка для описания таких исключений, которые большинство бобов там не могло произойти, и скорее всего, они происходят из контейнера EJB. Ваш код определенно не должен вызывать EJBException. Это, вероятно, только помешало бы уму сервера. Также вы не можете аннотировать исключение как @ApplicationException так как вы не владеете кодом, он предоставляется API Java EE. Вы можете расширить EJBException, но не имеет смысла маскировать ваш код как часть кодовой базы сервера. Наиболее главное, с EJBException расширяет RuntimeException, я думаю, что безопасно классифицировать EJBException как «исключение системного уровня».
Берегись Дьявола
некоторые пульт ДУ клиенты получат исключения remoteexception вместо исключения EJBException.
перехватчики что вы, возможно, даже не знаете в огромном проекте предприятия, может проглотить исключения, брошенные из вашего метода выполнение активной транзакции commit хотя у вас никогда не было планов позволить ему это сделать.
держу пари, вы думаете, что a подавленные исключением всегда извлекается с помощью Throwable.getCause(). Обратите внимание, что спецификация EJB 3.2 не говорит, что контейнер должен или должен щадить ссылку на подавленную причину. Фактически, единственное, что должен сделать контейнер, это зарегистрировать исключение. Тогда, если Боба нет одноэлементный экземпляр bean должен быть отброшен и больше никогда не использоваться. Кроме того, если компонент является управляемым сообщением компонентом, только тогда требуется «обернуть»исходное исключение. Как «обернуть» исключение не указано. Супер портативный прохладный код, вероятно, следует взглянуть на подобное.getCause() метод и Throwable.getSuppressed () тоже. Не ожидайте, что в вашем коде обработки всегда будет найдено исходное исключение.
асинхронные методы (методы публичного сеанса bean аннотированы @асинхронные), который возвращает void, не может распространять исключение на своего клиента. Таким образом, они не должны объявлять или исключения приложений (посмотреть спецификация EJB 3.2 страница 82). Обратите внимание, что при вызове асинхронного метода сервер может не предоставить потоковые ресурсы для обслуживания вашего запроса, и если это так, он должен бросить.. EJBException (страница 48)!
Вопросы: реестр контрактов
Ошибка при подписании сведения о БО
Здравствуйте! Кто-нибудь знает, что делать с ошибкой при подписании сформированных сведений о БО (реестр контрактов, регистрация нового ГК)?
java.lang.RuntimeException: javax.ejb.EJBTransactionRolledbackException: nested exception is: javax.ejb.EJBException: See nested exception; nested exception is: java.lang.RuntimeException: Error occurred while validating print form [printFormContentId = 281983921]. Ошибка при валидации по схеме.
-
IrinaI72 - Новичок
- Сообщений: 2
- Зарегистрирован: 08 апр 2019, 10:36
- Благодарил (а): 0 раз.
- Поблагодарили: 0 раз.
- Роль: Заказчик
- Пункты репутации: 0
Re: Вопросы: реестр контрактов
Da10 » 08 апр 2019, 13:30
Коллеги, такой вопрос. Если внести изменения в карточку контракта по причине технической ошибки (неверно указан бюджет) через функционал «внести изменения» -> «исправление сведений», это является нарушением, если уже больше 5 дней с момента заключения прошло или нет? При сохранении, вроде не ругается.
«Ребята! У нас две проблемы: Минобороны и пуговица. Мы пуговицу найти можем? Чисто теоретически? Можем. А с Минобороны… ничего. Вывод: ищем пуговицу.»
-
Da10 - Завсегдатай
- Сообщений: 851
- Зарегистрирован: 06 дек 2018, 10:15
- Благодарил (а): 7 раз.
- Поблагодарили: 23 раз.
- Роль: Заказчик
- Пункты репутации: 21
Re: Вопросы: реестр контрактов
kir_dfg » 08 апр 2019, 13:32
Da10 писал(а):Коллеги, такой вопрос. Если внести изменения в карточку контракта по причине технической ошибки (неверно указан бюджет) через функционал «внести изменения» -> «исправление сведений», это является нарушением, если уже больше 5 дней с момента заключения прошло или нет? При сохранении, вроде не ругается.
Нет, не является. Наоборот, устраняете нарушение. Если что, можно отбиться всегда.
Главное, чтобы это было именно исправление, а не внесение изменений в контракт.
Машины времени есть у каждого. Те, что переносят в прошлое, зовутся воспоминаниями, а те, что уносят в будущее — мечтами ©
-
kir_dfg - Профессор
- Сообщений: 12112
- Зарегистрирован: 19 дек 2016, 11:34
- Откуда: Юпитер-2
- Благодарил (а): 173 раз.
- Поблагодарили: 1534 раз.
- Роль: Заказчик
- Пункты репутации: 635
Re: Вопросы: реестр контрактов
Da10 » 08 апр 2019, 13:40
kir_dfg писал(а):
Da10 писал(а):Коллеги, такой вопрос. Если внести изменения в карточку контракта по причине технической ошибки (неверно указан бюджет) через функционал «внести изменения» -> «исправление сведений», это является нарушением, если уже больше 5 дней с момента заключения прошло или нет? При сохранении, вроде не ругается.
Нет, не является. Наоборот, устраняете нарушение. Если что, можно отбиться всегда.
Главное, чтобы это было именно исправление, а не внесение изменений в контракт.
Спасибо. Будем устранять)
«Ребята! У нас две проблемы: Минобороны и пуговица. Мы пуговицу найти можем? Чисто теоретически? Можем. А с Минобороны… ничего. Вывод: ищем пуговицу.»
-
Da10 - Завсегдатай
- Сообщений: 851
- Зарегистрирован: 06 дек 2018, 10:15
- Благодарил (а): 7 раз.
- Поблагодарили: 23 раз.
- Роль: Заказчик
- Пункты репутации: 21
Re: Ошибка при подписании сведения о БО
kir_dfg » 08 апр 2019, 14:19
IrinaI72 писал(а):Здравствуйте! Кто-нибудь знает, что делать с ошибкой при подписании сформированных сведений о БО (реестр контрактов, регистрация нового ГК)?
java.lang.RuntimeException: javax.ejb.EJBTransactionRolledbackException: nested exception is: javax.ejb.EJBException: See nested exception; nested exception is: java.lang.RuntimeException: Error occurred while validating print form [printFormContentId = 281983921]. Ошибка при валидации по схеме.
Здравствуйте. Давно вылезло? Если сегодня, то только ждать.
А так посмотрите, нет ли где длинных строк, пустых полей и прочего.
Машины времени есть у каждого. Те, что переносят в прошлое, зовутся воспоминаниями, а те, что уносят в будущее — мечтами ©
-
kir_dfg - Профессор
- Сообщений: 12112
- Зарегистрирован: 19 дек 2016, 11:34
- Откуда: Юпитер-2
- Благодарил (а): 173 раз.
- Поблагодарили: 1534 раз.
- Роль: Заказчик
- Пункты репутации: 635
Re: Обсуждение: обсуждение техподдержки и крики души
IrinaI72 » 08 апр 2019, 14:54
Отвечая на свой же вопрос, вдруг кому-то пригодится.. Если при подписании сформированных сведений о БО появляется ошибка на всю страницу java.lang. и т.д., вернитесь в Информацию о поставщике и проставьте там появившиеся после обновления поля «Наименование объекта почтовой связи» и «Номер ячейки».
-
IrinaI72 - Новичок
- Сообщений: 2
- Зарегистрирован: 08 апр 2019, 10:36
- Благодарил (а): 0 раз.
- Поблагодарили: 0 раз.
- Роль: Заказчик
- Пункты репутации: 0
Re: Вопросы: реестр контрактов
annmok » 08 апр 2019, 17:09
коллеги, добрый день.
ошибка perform publication contract with message, затем после нажатия на кнопку ок- internal server error. . И все, висит глухо, крутится, пока руками не наберёшь в строке поиска адрес заново. Другие контракты-не знаю, у меня не было пока шанса попробовать, не заключали больше ничего. Сейчас доеду до работы и попробую сформировать контракт вручную..
воюю с техподдержкой, ошибка сохраняется, была надежды что новый контракт смогу опубликовать..как бы не так:((( Подскажите,можт я, курица, делаю что-то неправильно..
Нажала подписать и разместить в модуле «заключение контрактов». Контракт ушел в ЕИС.
Потом зашла в Реестр контрактов,нажала сформировать сведения о контракте,выбрала нужную закупку, заполнила все и отправляю на размещение и контроль… по логике все верно… но блин ошибка,хоть ты убейся.
Количество символов в наименовании контракта небольшое. перевыбирать извещение по рекомендации ТП пробовала… Ставить гарантии по контракту (продукты!) пробовала.. а воз и ныне там. Сегодня 08 апреля.. контракт от 11 марта… каждый день начинаю утро с письма в ТП…
-
annmok - Завсегдатай
- Сообщений: 245
- Зарегистрирован: 17 мар 2016, 11:22
- Благодарил (а): 87 раз.
- Поблагодарили: 10 раз.
- Роль: Заказчик
- Пункты репутации: 11
Re: Вопросы: реестр контрактов
ДиМкА » 08 апр 2019, 17:38
annmok писал(а):воюю с техподдержкой, ошибка сохраняется, была надежды что новый контракт смогу опубликовать..как бы не так:((( Подскажите,можт я, курица, делаю что-то неправильно..Нажала подписать и разместить в модуле «заключение контрактов». Контракт ушел в ЕИС.Потом зашла в Реестр контрактов,нажала сформировать сведения о контракте,выбрала нужную закупку, заполнила все и отправляю на размещение и контроль… по логике все верно… но блин ошибка,хоть ты убейся.Количество символов в наименовании контракта небольшое. перевыбирать извещение по рекомендации ТП пробовала… Ставить гарантии по контракту (продукты!) пробовала.. а воз и ныне там. Сегодня 08 апреля.. контракт от 11 марта… каждый день начинаю утро с письма в ТП…
Сегодня такая же ошибка
ДиМкА писал(а):После обновления вернулась ошибка: при публикации контракта «Произошла ошибка performPublicationContractWithMessage»/»Internal Server Error».
Плагин переустановил, перезагрузился — не уходит.
Причем на разных машинах — одно и тоже.
Обсуждение: обсуждение техподдержки и крики души
post454648.html#p454648
-
ДиМкА - Профессор
- Сообщений: 7933
- Зарегистрирован: 01 ноя 2014, 00:31
- Благодарил (а): 13 раз.
- Поблагодарили: 1558 раз.
- Роль: Заказчик
- Пункты репутации: 589
Вернуться в Работа заказчика
Кто сейчас на форуме
Зарегистрированные пользователи: ASGOR, Google [Bot]
Вопросы: реестр контрактов
Ошибка при подписании сведения о БО
IrinaI72 » 08 апр 2019, 13:04
Re: Вопросы: реестр контрактов
Da10 » 08 апр 2019, 13:30
Re: Вопросы: реестр контрактов
kir_dfg » 08 апр 2019, 13:32
Re: Вопросы: реестр контрактов
Da10 » 08 апр 2019, 13:40
Re: Ошибка при подписании сведения о БО
kir_dfg » 08 апр 2019, 14:19
Re: Обсуждение: обсуждение техподдержки и крики души
IrinaI72 » 08 апр 2019, 14:54
Re: Вопросы: реестр контрактов
annmok » 08 апр 2019, 17:09
коллеги, добрый день.
воюю с техподдержкой, ошибка сохраняется, была надежды что новый контракт смогу опубликовать..как бы не так:((( Подскажите,можт я, курица, делаю что-то неправильно..
Нажала подписать и разместить в модуле «заключение контрактов». Контракт ушел в ЕИС.
Потом зашла в Реестр контрактов,нажала сформировать сведения о контракте,выбрала нужную закупку, заполнила все и отправляю на размещение и контроль. по логике все верно. но блин ошибка,хоть ты убейся.
Количество символов в наименовании контракта небольшое. перевыбирать извещение по рекомендации ТП пробовала. Ставить гарантии по контракту (продукты!) пробовала.. а воз и ныне там. Сегодня 08 апреля.. контракт от 11 марта. каждый день начинаю утро с письма в ТП.
Re: Вопросы: реестр контрактов
ДиМкА » 08 апр 2019, 17:38
ДиМкА писал(а): После обновления вернулась ошибка: при публикации контракта «Произошла ошибка performPublicationContractWithMessage»/»Internal Server Error».
Плагин переустановил, перезагрузился — не уходит.
Причем на разных машинах — одно и тоже.
Re: Ошибка в реестре контрактов
Прохожий зак » 08 апр 2019, 21:53
Re: Вопросы: реестр контрактов
ДиМкА » 09 апр 2019, 09:19
Источник
EJB Exception (Doc ID 2402366.1)
Last updated on NOVEMBER 22, 2022
Applies to:
CCB — Oracle Utilities Customer Care and Billing
OUAF/FW — Oracle Utilities Framework
On : 2.5.0.2.0 version, ENV — Environment
When running the CCB app in native mode in the Weblogic Server, there are some issues when installing the ear files.
he ear files (SPLService, SPLWeb, Webservices) are installed correctly, their state is active, but there are «EJB Exception» Errors
ERROR
————————
<> com.splwg.shared.common.LoggedException: Failed READ due to EJBException
Caused By: javax.ejb.EJBException: EJB Exception: ; nested exception is:
com.oracle.pitchfork.interfaces.LifecycleCallbackException: Failure to invoke protected void com.splwg.ejb.service.impl.ServiceBean.initializeContext() on bean class class com.splwg.ejb.service.impl.SPLServiceBean_8o7vtd_Impl with args: null
Caused By: com.oracle.pitchfork.interfaces.LifecycleCallbackException: Failure to invoke protected void com.splwg.ejb.service.impl.ServiceBean.initializeContext() on bean class class com.splwg.ejb.service.impl.SPLServiceBean_8o7vtd_Impl with args: null
Caused By: java.lang.reflect.InvocationTargetException
Caused By: java.lang.ExceptionInInitializerError
Caused By: java.lang.NullPointerException
Could not start flush listener for WebservicesCacheFlusher. Please check JMS configuration.
javax.naming.NameNotFoundException: While trying to lookup ‘jms.OUFlushConnectionFactory’ didn’t find subcontext ‘jms’. Resolved »; remaining name ‘jms/OUFlushConnectionFactory’
821 [[ACTIVE] ExecuteThread: ‘0’ for queue: ‘weblogic.kernel.Default (self-tuning)’] ERROR (common.cache.CacheFlushManager) Flush listener for WebservicesCacheFlusher could not be started
com.splwg.shared.common.LoggedException: (805522049) Could not start flush listener for WebservicesCacheFlusher. Please check JMS configuration.
What is the impact of there errors?
В
Solution
To view full details, sign in with your My Oracle Support account.
Don’t have a My Oracle Support account? Click to get started!
In this Document
My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.
Oracle offers a comprehensive and fully integrated stack of cloud applications and platform services. For more information about Oracle (NYSE:ORCL), visit oracle.com. пїЅ Oracle | Contact and Chat | Support | Communities | Connect with us | | | | Legal Notices | Terms of Use
Источник
EJB3.1 Системные исключения против javax.EJB-компонента.EJBException
просто немного фона на EJB3.1 исключения, прежде чем поднимать мой вопрос —
исключения приложений состоят из
пользовательские checked или unchecked исключения, которые имеют @Исключение applicationexception аннотации
все проверенные исключения
java.ленг.Исключение & это исключения подкласса
кроме java.РМО.RemoteException & это исключения подкласса
Системные исключения составляют
java.РМО.RemoteException и это исключения подкласса
все неотмеченные исключения
java.ленг.RuntimeException и его подклассов исключений
Ява.ленг.Ошибка и это исключения подкласса
Ниже приведено заявление, которое я прочитал в этом книги
в исключениях системы EJB не исключено клиентом, когда встречаются такие исключения не передаются клиенту как есть, но обертываются в javax.EJB-компонента.EJBException.
- все исключения приложений, описанные выше, должны быть брошены непосредственно EJB клиенту?
- если системные исключения обернуты внутри javax.EJB-компонента.EJBException перед броском клиенту, то является javax.EJB-компонента.EJBException рассматривается как система Исключение?
2 ответов
- да, более или менее так они работают. Для получения дополнительной информации о поведении EJB ознакомьтесь со следующим сообщением в блоге:ссылке
исключение применения будет брошено когда ошибка бизнес-логики, в отличие от системной ошибки.
существует важное различие: исключения приложений не автоматически вызвать откат транзакции. У клиента возможность восстановления после создания исключения приложения.
исключения приложений отправляются клиенту без переупаковки как исключение EJBException. Поэтому их можно использовать для проверки отчетов ошибки или проблемы бизнес-логики, и они дойдут до клиента.
- javax.ejb.EJBException выходит RuntimeException Так что да, это системное исключение.
общий сценарий, связанный с этим: если у вас есть непойманные RuntimeException в коде приложения будет откат. Это довольно полезное поведение по умолчанию.
IndoKnight, что идеально завернуть вам дал как Exception семантика в рамках Java EE.. работа.
вот две единственные строки «bean provider», то есть вы и я, должны знать об исключениях в Java EE:
ваш bean полностью свободен для восстановления от любого типа исключения или ошибки, как вы считаете нужным, в отношении других ограничений, под которыми может находиться bean. Если вы оправились от исключения, то поздравляю-проблем нет anymore =)
соответствующим ограничением может быть, например, то, что» корпоративные компоненты, использующие демаркацию транзакций, управляемых контейнером, не должны использовать методы управления транзакциями, которые мешают границам демаркации транзакций контейнера», чтобы процитировать Java EE 7 учебник 48-2 страницы (вы хотите программно установить откат управляемой транзакции контейнера, используйте метод ejbcontext.setRollbackOnly()).
Вам также не рекомендуется, как и в любом типе приложения Java, обрабатывать Throwable или Error брошенный с очень низкого уровня. RuntimeException теоретически считается в этой категории, поскольку он так лихо сигнализирует об «ошибке разработчика», которая похожа на» совершенно неожиданную», но мы все знаем, что это не так.
в основном, неожиданное исключение (исключения времени выполнения + другое дерьмо, которое мы предполагаем, происходит от кого-то другого) предполагается, что ваш код не может быть обработан и должен обрабатываться сервером. Сервер должен обрабатывать исключение» unhandleable» (посмотреть спецификация EJB 3.2, стр. 204), напечатав что-то об этом в журнале (я перейду к деталям немного позже!).
более конкретно..
вы спросили (И вот во что я верю или не верны):
все исключения приложений описанное выше должно быть брошено непосредственно EJB клиенту?
да. и транзакция (если она активна) не должна откатываться, если вы явно не указываете, что она должна использовать атрибут отката ApplicationException . Исключение Java-кода-это очень естественная вещь. Java EE не имеет намерения разрушать эту модель программирования. Так что вперед, бросьте проверенные исключения, как вам нравится, заставляя клиентов пытаться поймать те или отметьте исключения среды выполнения как исключения приложения и бросьте их тоже. Счастливого броска!
если системные исключения обернуты внутри javax.EJB-компонента.EJBException перед бросая клиенту, затем javax.EJB-компонента.EJBException считаются Системное Исключение?
да, но не по той причине, которую вы предоставляете. Чтобы быть ясным, нет типа SystemException. Это просто причудливая формулировка для описания таких исключений, которые большинство бобов там не могло произойти, и скорее всего, они происходят из контейнера EJB. Ваш код определенно не должен вызывать EJBException. Это, вероятно, только помешало бы уму сервера. Также вы не можете аннотировать исключение как @ApplicationException так как вы не владеете кодом, он предоставляется API Java EE. Вы можете расширить EJBException, но не имеет смысла маскировать ваш код как часть кодовой базы сервера. Наиболее главное, с EJBException расширяет RuntimeException, я думаю, что безопасно классифицировать EJBException как «исключение системного уровня».
Берегись Дьявола
некоторые пульт ДУ клиенты получат исключения remoteexception вместо исключения EJBException.
перехватчики что вы, возможно, даже не знаете в огромном проекте предприятия, может проглотить исключения, брошенные из вашего метода выполнение активной транзакции commit хотя у вас никогда не было планов позволить ему это сделать.
держу пари, вы думаете, что a подавленные исключением всегда извлекается с помощью Throwable.getCause(). Обратите внимание, что спецификация EJB 3.2 не говорит, что контейнер должен или должен щадить ссылку на подавленную причину. Фактически, единственное, что должен сделать контейнер, это зарегистрировать исключение. Тогда, если Боба нет одноэлементный экземпляр bean должен быть отброшен и больше никогда не использоваться. Кроме того, если компонент является управляемым сообщением компонентом, только тогда требуется «обернуть»исходное исключение. Как «обернуть» исключение не указано. Супер портативный прохладный код, вероятно, следует взглянуть на подобное.getCause() метод и Throwable.getSuppressed () тоже. Не ожидайте, что в вашем коде обработки всегда будет найдено исходное исключение.
асинхронные методы (методы публичного сеанса bean аннотированы @асинхронные), который возвращает void, не может распространять исключение на своего клиента. Таким образом, они не должны объявлять или исключения приложений (посмотреть спецификация EJB 3.2 страница 82). Обратите внимание, что при вызове асинхронного метода сервер может не предоставить потоковые ресурсы для обслуживания вашего запроса, и если это так, он должен бросить.. EJBException (страница 48)!
Источник
Уважаемые заказчики! В связи с обновлениями ЕИС на версию 9.3 существует ошибки интеграции извещений
Уважаемые заказчики! В связи с обновлениями Единой информационной системы в сфере закупок РФ (далее – ЕИС) на версию 9.3 существует ошибки интеграции извещений:
Извещение. See nested exception; nested exception is: java.lang.ClassCastException
Некорректные данные. IDE. See nested exception; nested exception is: java.lang.ClassCastException: ru.lanit.fz44.ejb.service.priz.dto.PrizKtruCharacteristicValueDto incompatible with ru.lanit.fz44.ejb.facade.ktru.dto.CharacteristicValueDto javax.ejb.EJBException: See nested exception; nested exception is: java.lang.ClassCastException: ru.lanit.fz44.ejb.service.priz.dto.PrizKtruCharacteristicValueDto incompatible with ru.lanit.fz44.ejb.facade.ktru.dto.CharacteristicValueDto java.lang.ClassCastException: ru.lanit.fz44.ejb.service.priz.dto.PrizKtruCharacteristicValueDto incompatible with ru.lanit.fz44.ejb.facade.ktru.dto.CharacteristicValueDto at ru.lanit.fz44.ejb.facade.priz.integration.impl.LotPositionTransformerBean.buildSelectedKtruCharacteristicValueFromRef(LotPositionTransformerBean.java:220) at ru.lanit.fz44.ejb.facade.priz.integration.impl.LotPositionTransformerBean.buildKtruCharacteristicFromPpg(LotPositionTransformerBean.java:173) at ru.lanit.fz44.ejb.facade.priz.integration.impl.LotPositionTransformerBean.mapKtru(LotPositionTransformerBean.java:137) at ru.lanit.fz44.ejb.facade.priz.integration.impl.LotPositionTransformerBean.transform(LotPositionTransformerBean.java:99) at sun.reflect.GeneratedMethodAccessor3503.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) at java.lang.reflect.Method.invoke(Method.java:611) at com.ibm.ejs.container.EJSContainer.invokeProceed(EJSContainer.java:5882) at com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed(InvocationContextImpl.java:586) at ru.lanit.monitoring.monitors.aop.MonitoredOperationInterceptor.monitorAroundMethod(MonitoredOperationInterceptor.java:62) at sun.reflect.GeneratedMethodAccessor1047.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) at java.lang.reflect.Method.invoke(Method.java:611) at com.ibm.ejs.container.interceptors.InterceptorProxy.invokeInterceptor(InterceptorProxy.java:
В настоящее время службой технической поддержки ГИС направлена задача на исправление в ЕИС.
(ПРИЗ_АК_0000_0632) В таблице по лекарственным препаратам содержатся строки, в которых выбраны лекарственные формы и дозировки, не соответствующие указанному значению МНН.
НАТРИЯ ХЛОРИД:
НАТРИЯ ХЛОРИД
НАТРИЯ ХЛОРИД:
НАТРИЯ ХЛОРИД
До момента исправления ошибок в целях соблюдения сроков размещения извещений необходимо:
- Создать проект извещения в ГИС «Госзакупки ЯО».
- Направить на размещение – получить текст ошибки ЕИС (один из вышеуказанных).
- Разместить извещение напрямую в ЕИС.
- Обратиться в службу технической поддержки ГИС «Госзакупки ЯО» с указанием номера извещения и даты размещения извещения для ручного перевода в ГИС в состояние «Опубликован». Обращаем внимание, что в службу технической поддержки необходимо обращаться своевременно в связи с осуществлением импорта протоколов закупки.
Приносим свои извинения за доставленные неудобства.
Источник
I have an entity called Medico which was created as an Entity Class from Database, hence I think the entity definition is failsafe here, nevertheless the definition is the following:
@Entity
@Table(name = "medico")
@XmlRootElement
@NamedQueries({All named queries here})
public class Medico implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@NotNull
@Column(name = "idMedico")
private Integer idMedico;
@Basic(optional = false)
@NotNull
@Column(name = "Identificacion")
private int identificacion;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 33)
@Column(name = "Primer_Nombre")
private String primerNombre;
@Size(max = 33)
@Column(name = "Segundo_Nombre")
private String segundoNombre;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 33)
@Column(name = "Primer_Apellido")
private String primerApellido;
@Size(max = 33)
@Column(name = "Segundo_Apellido")
private String segundoApellido;
@Basic(optional = false)
@NotNull
@Column(name = "Telefono")
private long telefono;
@Column(name = "Telefono_Celular")
private BigInteger telefonoCelular;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 33)
@Column(name = "Direccion")
private String direccion;
// Constructors..
// Getters and setters..
}
I want to create new Medico entities on MySql database, and this is how I am doing so:
@ManagedBean
@ViewScoped
public class ConsultaMedicos implements Serializable {
// Variables Definition ..
@EJB
private DoctorsFacadeLocal doctorsFacade;
// Constructor and other methods ..
public String save()
{
try{
doctorsFacade.save(consultedDoctor);
FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_INFO, CREATE_SUMMARY, null);
FacesContext.getCurrentInstance().addMessage(CREATE_SUMMARY, fm);
}
catch(Exception ex){
FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, CREATE_ERROR_SUMMARY, null);
FacesContext.getCurrentInstance().addMessage(CREATE_ERROR_SUMMARY, fm);
return null;
}
return "listaMedicos.xhtml";
}
...
}
@Local
public interface DoctorsFacadeLocal {
List<Medico> findAllDoctors();
Medico findDoctorByIdNumber(int identificacion);
void edit(Medico medico);
void save(Medico medico);
}
@Stateless
public class DoctorsFacade implements DoctorsFacadeLocal {
@PersistenceContext
private EntityManager em;
// Other methods..
@Override
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void save(Medico medico)
{
em.persist(medico);
em.flush();
}
}
After I call save()
from my JSF page, I get the following exception:
javax.ejb.EJBException
at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5194)
at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5092)
at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4880)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2039)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1990)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:222)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
at $Proxy157.save(Unknown Source)
at com.lemm.web.bean.ConsultaMedicos.save(ConsultaMedicos.java:89)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.el.BeanELResolver.invokeMethod(BeanELResolver.java:737)
at javax.el.BeanELResolver.invoke(BeanELResolver.java:467)
at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:254)
at com.sun.el.parser.AstValue.invoke(AstValue.java:228)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:662)
Caused by: javax.validation.ConstraintViolationException: Bean Validation constraint(s) violated while executing Automatic Bean Validation on callback event:'prePersist'. Please refer to embedded ConstraintViolations for details.
at org.eclipse.persistence.internal.jpa.metadata.listeners.BeanValidationListener.validateOnCallbackEvent(BeanValidationListener.java:90)
at org.eclipse.persistence.internal.jpa.metadata.listeners.BeanValidationListener.prePersist(BeanValidationListener.java:62)
at org.eclipse.persistence.descriptors.DescriptorEventManager.notifyListener(DescriptorEventManager.java:698)
at org.eclipse.persistence.descriptors.DescriptorEventManager.notifyEJB30Listeners(DescriptorEventManager.java:641)
at org.eclipse.persistence.descriptors.DescriptorEventManager.executeEvent(DescriptorEventManager.java:200)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectClone(UnitOfWorkImpl.java:4216)
at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.cloneAndRegisterNewObject(RepeatableWriteUnitOfWork.java:576)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalRegisterObject(UnitOfWorkImpl.java:2883)
at org.eclipse.persistence.internal.sessions.MergeManager.registerObjectForMergeCloneIntoWorkingCopy(MergeManager.java:932)
at org.eclipse.persistence.internal.sessions.MergeManager.mergeChangesOfCloneIntoWorkingCopy(MergeManager.java:492)
at org.eclipse.persistence.internal.sessions.MergeManager.mergeChanges(MergeManager.java:263)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.mergeCloneWithReferences(UnitOfWorkImpl.java:3467)
at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.mergeCloneWithReferences(RepeatableWriteUnitOfWork.java:363)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.mergeCloneWithReferences(UnitOfWorkImpl.java:3427)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.mergeInternal(EntityManagerImpl.java:452)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.merge(EntityManagerImpl.java:429)
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.merge(EntityManagerWrapper.java:286)
at com.lemm.ejb.facade.DoctorsFacade.save(DoctorsFacade.java:61)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5367)
at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:801)
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144)
at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:862)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:801)
at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:371)
at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5339)
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5327)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:214)
... 47 more
What am I doing wrong? What am I missing?
If it serves for anything heres my persistence.xml
<persistence-unit name="lemmPU" transaction-type="JTA">
<jta-data-source>jdbc/lemmdb</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
</properties>
</persistence-unit>
Я делаю веб-приложение с использованием Java EE, базы данных sqlserver. Я пытаюсь добавить нового клиента в базу данных с помощью entitymanager, и я получаю такое исключение. Сервер (glassfish) работает без ошибок
[2018-11-09T13:20:33.396+0100] [glassfish 4.1] [WARNING] [AS-EJB-00056] [javax.enterprise.ejb.container] [tid: _ThreadID=32 _ThreadName=http-listener-1(5)] [timeMillis: 1541766033396] [levelValue: 900] [[ A system exception occurred during an invocation on EJB KontoBean, method: public void rental.KontoBean.addNewClient(rental.DaneLogowaniaEntity,rental.DaneKlientEntity,rental.KlientEntity)]] [2018-11-09T13:20:33.397+0100] [glassfish 4.1] [WARNING] [] [javax.enterprise.ejb.container] [tid: _ThreadID=32 _ThreadName=http-listener-1(5)] [timeMillis: 1541766033397] [levelValue: 900] [[ javax.ejb.EJBException at com.sun.ejb.containers.EJBContainerTransactionManager.processSystemException(EJBContainerTransactionManager.java:752) at com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:702) at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:507) at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4566) at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2074) at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2044) at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220) at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88) at com.sun.proxy.$Proxy212.addNewClient(Unknown Source) at rental.__EJB31_Generated__KontoBean__Intf____Bean__.addNewClient(Unknown Source) at rental.KontoNamed.addNewKlientEntity(KontoNamed.java:54) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.el.parser.AstValue.invoke(AstValue.java:289) at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304) at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40) at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50) at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) at javax.faces.component.UICommand.broadcast(UICommand.java:315) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283) at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206) at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180) at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.IllegalStateException: Unable to retrieve EntityManagerFactory for unitName null at com.sun.enterprise.container.common.impl.EntityManagerWrapper.init(EntityManagerWrapper.java:138) at com.sun.enterprise.container.common.impl.EntityManagerWrapper.doTxRequiredCheck(EntityManagerWrapper.java:158) at com.sun.enterprise.container.common.impl.EntityManagerWrapper.doTransactionScopedTxCheck(EntityManagerWrapper.java:151) at com.sun.enterprise.container.common.impl.EntityManagerWrapper.persist(EntityManagerWrapper.java:281) at rental.KontoBean.addNewClient(KontoBean.java:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1081) at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1153) at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4786) at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:656) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608) at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:64) at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52) at sun.reflect.GeneratedMethodAccessor57.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:140) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:369) at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4758) at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4746) at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212) ... 50 more ]] [2018-11-09T13:20:33.401+0100] [glassfish 4.1] [SEVERE] [] [] [tid: _ThreadID=32 _ThreadName=Thread-9] [timeMillis: 1541766033401] [levelValue: 1000] [[ javax.ejb.EJBException at com.sun.ejb.containers.EJBContainerTransactionManager.processSystemException(EJBContainerTransactionManager.java:752) at com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:702) at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:507) at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4566) at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2074) at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2044) at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220) at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88) at com.sun.proxy.$Proxy212.addNewClient(Unknown Source) at rental.__EJB31_Generated__KontoBean__Intf____Bean__.addNewClient(Unknown Source) at rental.KontoNamed.addNewKlientEntity(KontoNamed.java:54) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.el.parser.AstValue.invoke(AstValue.java:289) at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304) at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40) at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50) at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) at javax.faces.component.UICommand.broadcast(UICommand.java:315) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283) at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206) at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180) at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.IllegalStateException: Unable to retrieve EntityManagerFactory for unitName null at com.sun.enterprise.container.common.impl.EntityManagerWrapper.init(EntityManagerWrapper.java:138) at com.sun.enterprise.container.common.impl.EntityManagerWrapper.doTxRequiredCheck(EntityManagerWrapper.java:158) at com.sun.enterprise.container.common.impl.EntityManagerWrapper.doTransactionScopedTxCheck(EntityManagerWrapper.java:151) at com.sun.enterprise.container.common.impl.EntityManagerWrapper.persist(EntityManagerWrapper.java:281) at rental.KontoBean.addNewClient(KontoBean.java:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1081) at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1153) at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4786) at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:656) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608) at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:64) at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52) at sun.reflect.GeneratedMethodAccessor57.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:140) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:369) at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4758) at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4746) at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java]] [2018-11-09T13:20:33.401+0100] [glassfish 4.1] [SEVERE] [] [] [tid: _ThreadID=32 _ThreadName=Thread-9] [timeMillis: 1541766033401] [levelValue: 1000] [[ :212) ... 50 more]]
Мой KlientEntity.java
package rental; import javax.persistence.*; @Entity @Table(name = "Klient", schema = "dbo", catalog = "Test") public class KlientEntity { private int id; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID",nullable = false) public int getId() { return id; } public void setId(int id) { this.id = id; } @OneToOne(cascade = CascadeType.PERSIST) private DaneKlientEntity daneKlientEntity; @OneToOne(cascade = CascadeType.PERSIST) private DaneLogowaniaEntity daneLogowaniaEntity; public DaneKlientEntity getDaneKlientEntity() { return daneKlientEntity; } public void setDaneKlientEntity(DaneKlientEntity daneKlientEntity) { this.daneKlientEntity = daneKlientEntity; } public DaneLogowaniaEntity getDaneLogowaniaEntity() { return daneLogowaniaEntity; } public void setDaneLogowaniaEntity(DaneLogowaniaEntity daneLogowaniaEntity) { this.daneLogowaniaEntity = daneLogowaniaEntity; } }
KontoBean.java
package rental; import javax.ejb.LocalBean; import javax.ejb.Stateless; import javax.inject.Named; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @LocalBean @Stateless public class KontoBean { public KontoBean(){ } @PersistenceContext EntityManager entityManager; public void addNewClient(DaneLogowaniaEntity daneLogowaniaEntity, DaneKlientEntity daneKlientEntity, KlientEntity klientEntity) { entityManager.persist(daneLogowaniaEntity); entityManager.persist(daneKlientEntity); entityManager.persist(klientEntity); entityManager.flush(); } public void updateDaneKlientaEntity(DaneKlientEntity daneKlientEntity) { DaneKlientEntity entity = entityManager.find(DaneKlientEntity.class,daneKlientEntity.getId()); entity.setEmail(daneKlientEntity.getEmail()); entity.setImie(daneKlientEntity.getImie()); entity.setNazwisko(daneKlientEntity.getNazwisko()); entity.setTel(daneKlientEntity.getTel()); entityManager.persist(entity); } public void updateDaneLogowaniaEntity(DaneLogowaniaEntity daneLogowaniaEntity) { DaneLogowaniaEntity daneLogowaniaEntity1 = entityManager.find(DaneLogowaniaEntity.class,daneLogowaniaEntity.getId()); } public void updateKlientEntity(DaneKlientEntity daneKlientEntity, DaneLogowaniaEntity daneLogowaniaEntity) { updateDaneKlientaEntity(daneKlientEntity); updateDaneLogowaniaEntity(daneLogowaniaEntity); } }
KontoNamed.java
package rental; import javax.annotation.PostConstruct; import javax.ejb.EJB; import javax.inject.Named; import java.security.NoSuchAlgorithmException; @Named("kontoNamed") public class KontoNamed { private String verificationPassword; @EJB private MessageBean messageBean; public String getMessageBean() {return messageBean.getContent();} @EJB KontoBean kontoBean; KlientEntity klientEntity = new KlientEntity(); DaneLogowaniaEntity daneLogowaniaEntity = new DaneLogowaniaEntity(); DaneKlientEntity daneKlientEntity = new DaneKlientEntity(); @PostConstruct public void init() { klientEntity = new KlientEntity(); klientEntity.setDaneLogowaniaEntity(new DaneLogowaniaEntity()); klientEntity.setDaneKlientEntity(new DaneKlientEntity()); } public KlientEntity getKlientEntity(){return klientEntity;} public void setKlientEntity(KlientEntity klientEntity){this.klientEntity=klientEntity;} public DaneKlientEntity getDaneKlientEntity(){return daneKlientEntity;} public void setDaneKlientEntity(DaneKlientEntity daneKlientEntity){this.daneKlientEntity=daneKlientEntity;} public DaneLogowaniaEntity getDaneLogowaniaEntity(){return daneLogowaniaEntity;} public void setDaneLogowaniaEntity(DaneLogowaniaEntity daneLogowaniaEntity){this.daneLogowaniaEntity=daneLogowaniaEntity;} public void addNewKlientEntity() { klientEntity.setDaneKlientEntity(daneKlientEntity); klientEntity.setDaneLogowaniaEntity(daneLogowaniaEntity); try { kontoBean.addNewClient(daneLogowaniaEntity, daneKlientEntity, klientEntity); } catch (Exception e) { e.printStackTrace(); messageBean.setContent("Błąd przy dodawaniu nowego konta!"); return; } messageBean.setContent("Dodanie rekordu zakończone sukcesem!"); } public String getVerificationPassword(){return verificationPassword;} public void setVerificationPassword(String verificationPassword) { this.verificationPassword = verificationPassword; } }
Persistence.xml
<?xml version = "1.0" encoding = "UTF-8"?> <persistence xmlns = "http://java.sun.com/xml/ns/persistence" version = "2.0"> <persistence-unit name = "NewPersistenceUnit"> <class>rental.AdminEntity</class> <class>rental.DaneKlientEntity</class> <class>rental.DaneLogowaniaEntity</class> <class>rental.KlientEntity</class> <class>rental.NaprawyEntity</class> <class>rental.PunktEntity</class> <class>rental.RaportyEntity</class> <class>rental.RowerEntity</class> <class>rental.WypozyczenieEntity</class> <properties> <property name = "eclipselink.jdbc.url" value = "jdbc:sqlserver://localhost:1433;database=Test"/> <property name = "eclipselink.jdbc.driver" value = "com.microsoft.sqlserver.jdbc.SQLServerDriver"/> <property name = "eclipselink.jdbc.user" value = "baza"/> <property name = "eclipselink.jdbc.password" value = "03c8bb23"/> </properties> </persistence-unit> </persistence>
Исключение отображается, когда я нажимаю кнопку добавления на веб-странице,
Я пытаюсь запустить этот базовый код JPA/EJB:
public static void main(String[] args){ UserBean user = new UserBean(); user.setId(1); user.setUserName("name1"); user.setPassword("passwd1"); em.persist(user); }
Я получаю эту ошибку:
javax.ejb.EJBException: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: com.JPA.Database
Любые идеи?
Я ищу в Интернете, и причина, по которой я нашел, была:
Это было вызвано тем, как вы создали объекты, т.е. если вы явно задали свойство ID. Исправлено удаление идентификатора.
Но я не понял, что мне нужно изменить, чтобы заставить код работать?
Ответ 1
Скажем, у вас есть два объекта Album
и Photo
. Альбом содержит много фотографий, поэтому он имеет отношение от одного до многих.
Класс альбома
@Entity
public class Album {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
Integer albumId;
String albumName;
@OneToMany(targetEntity=Photo.class,mappedBy="album",cascade={CascadeType.ALL},orphanRemoval=true)
Set<Photo> photos = new HashSet<Photo>();
}
Класс фотографий
@Entity
public class Photo{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
Integer photo_id;
String photoName;
@ManyToOne(targetEntity=Album.class)
@JoinColumn(name="album_id")
Album album;
}
Что нужно сделать, прежде чем продолжать или объединить, нужно установить ссылку на альбом в каждой фотографии.
Album myAlbum = new Album();
Photo photo1 = new Photo();
Photo photo2 = new Photo();
photo1.setAlbum(myAlbum);
photo2.setAlbum(myAlbum);
Вот как присоединить связанный объект до того, как вы будете продолжать или сливаться.
Ответ 2
Ошибка возникает из-за того, что установлен идентификатор объекта. Спящий режим различает переходные и отдельные объекты, а persist
работает только с переходными объектами. Если persist
завершает удаление объекта (что будет связано с тем, что идентификатор установлен), он вернет ошибку «отсоединенный объект, прошедший для сохранения». Вы можете найти более подробную информацию здесь и здесь.
Однако это применимо только в том случае, если вы указали первичный ключ, который должен быть автоматически сгенерирован: если поле настроено всегда на ручной настройку, тогда ваш код работает.
Ответ 3
удалить
user.setId(1);
поскольку он автоматически генерируется на БД,
и продолжайте с помощью команды persist.
Ответ 4
Я получил ответ, я использовал:
em.persist(user);
Я использовал слияние вместо persist:
em.merge(user);
Но не знаю, почему упорство не сработало.: (
Ответ 5
если вы используете для создания стратегии id = GenerationType.AUTO
в своей сущности.
Заменяет user.setId (1)
на user.setId (null)
, и проблема решена.
Ответ 6
Я знаю, что он слишком поздно и уверен, что каждый получил ответ. Но немного больше, чтобы добавить к этому: когда установлен GenerateType, persist() на объекте должен получить генерируемый идентификатор.
Если уже установлено значение, заданное пользователем Id, hibernate рассматривает его как сохраненную запись и поэтому обрабатывается как отсоединенный.
если id равен null — в этой ситуации исключение нулевого указателя возникает, когда тип AUTO или IDENTITY и т.д., если идентификатор не генерируется из таблицы или секировки и т.д.
design: это происходит, когда таблица имеет свойство bean в качестве первичного ключа.
GenerateType должен быть установлен только тогда, когда идентификатор автогенерируется.
удалите это, и вставка должна работать с указанным пользователем идентификатором.
(это плохой дизайн, чтобы иметь свойство, отображаемое в поле первичного ключа)
Ответ 7
Здесь .perist() будет только вставлять запись. Если мы используем .merge(), он проверит, существует ли какая-либо запись с текущим идентификатором. Если она существует, она обновится, иначе она будет вставлять новую запись.
Ответ 8
У меня была эта проблема, и она была вызвана кешем второго уровня:
- Я сохранял объект, использующий hibernate
- Затем я удалил строку, созданную из отдельного процесса, который не взаимодействовал с кешем второго уровня
- Я сохранял другой объект с тем же идентификатором (мои значения идентификатора не сгенерированы автоматически)
Следовательно, поскольку кеш не был аннулирован, hibernate предположил, что он имеет дело с отдельным экземпляром того же объекта.
Ответ 9
Если вы установите id в своей базе данных как первичный ключ и автоинкремент, то эта строка кода неверна:
user.setId(1);
Попробуйте следующее:
public static void main(String[] args){
UserBean user = new UserBean();
user.setUserName("name1");
user.setPassword("passwd1");
em.persist(user);
}
Ответ 10
Другая причина ошибки в том, что объект объекта не реализует интерфейс Serializable
@Entity
@Table(name = OddInstance.objectName, uniqueConstraints = @UniqueConstraint(columnNames = {"alias"}))
@NamedQueries({
@NamedQuery(name=OddInstance.findByAlias,
query="from OddInstance where alias = :alias"),
@NamedQuery(name=OddInstance.findAll,
query="from OddInstance")
})
public class OddInstance implements Serializable {
// ...
}
Ошибка EJB выглядит следующим образом:
javax.naming.NameNotFoundException: remote not bound at org.jnp.server.NamingServer.getBinding(NamingServer.java:529) at org.jnp.server.NamingServer.getBinding(NamingServer.java:537) at org.jnp.server.NamingServer.getObject(NamingServer.java:543) at org.jnp.server.NamingServer.lookup(NamingServer.java:296) at org.jnp.server.NamingServer.lookup(NamingServer.java:270) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305) at sun.rmi.transport.Transport$1.run(Transport.java:159) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:155) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255) at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142) at org.jnp.server.NamingServer_Stub.lookup(Unknown Source) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:667) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627) at javax.naming.InitialContext.lookup(InitialContext.java:392) at junit.test.PersionServiceTest.setUpBeforeClass(PersionServiceTest.java:22) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.internal.runners.BeforeAndAfterRunner.invokeMethod(BeforeAndAfterRunner.java:74) at org.junit.internal.runners.BeforeAndAfterRunner.runBefores(BeforeAndAfterRunner.java:50) at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:33) at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Конечно, даже начинающие знают, что привязка не далека! Но где это не обязательно? Может быть проверено шаг за шагом!
Сначала посмотрите на три файла:
Файл удаленного интерфейса:
package service.impl; import java.util.List; import javax.ejb.Remote; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import service.PersionService; import bean.Persion; @Stateless @Remote(PersionService.class) public class PersoinServiceBean implements PersionService { @PersistenceContext(unitName = "golden") EntityManager en; public void delete(Integer persionid) { en.remove(en.getReference(Persion.class, persionid)); } public Persion getPersion(Integer persionid) { return en.find(Persion.class, persionid); } @SuppressWarnings("unchecked") public List<Persion> getPersions() { return en.createQuery("select * from Persion p").getResultList(); } public void save(Persion persion) { en.persist(persion); } public void update(Persion persion) { en.merge(persion); } }
Файл конфигурации пула соединений: persistence.xml (в META-INF в проекте SRC)
<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> <persistence-unit name="golden" transaction-type="JTA"> <jta-data-source>java:goldenDS</jta-data-source> </persistence-unit> </persistence>
Файл конфигурации базы данных соединения Jboss, здесь используется Mysql
<?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>goldenDS</jndi-name> <connection-url> jdbc:mysql://localhost:3306/golden?useUnicode=true&characterEncoding=utf-8 </connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>root</user-name> <password>root</password> <exception-sorter-class-name> org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter </exception-sorter-class-name> <metadata> <type-mapping>mySQL</type-mapping> </metadata> </local-tx-datasource> </datasources>
1. Сначала посмотрите, подключен ли сервер к базе данных, запустите сервер и подключитесь к домашней странице. Вы можете увидеть ситуацию с соответствующим пулом ссылок из консоли JMX.
2. Проверьте правильность удаленного интерфейса и удалите объект управления
@PersistenceContext(unitName = "golden") EntityManager en;
Затем проверьте, можете ли вы получить удаленный объект
Если удаленное устройство не может быть связано или соответствующий удаленный интерфейс не может быть связано, это может быть связано с ошибкой при создании самого интерфейса или с ошибкой в объекте, вызываемом внутренне классом реализации интерфейса!
Эта ошибка вызвана тем, что вызванный объект управления не может быть создан!
Первым выбором является ошибка в файле конфигурации сервера и неверная строка подключения. Более того, файл persistence.xml должен быть обрезан в META-INF. Это имя файла в нижнем регистре!
Логирование ошибок программы EDI Connector ведётся по умолчанию по пути C:EdiConnectorlogsevents.log.
Для быстрого поиска темы с описанием ошибки, в поле поиска копируйте начало ошибки без директорий.
Unable to execute file: Create Process failed; code 2 The system cannot find the file specified
Ошибка возникает при завершении процесса установки (Finishing Instalation).
Причина: На ПК не установлен Microsoft .NET FrameWork 2.0 или выше.
Решение:
- Удалите EDI Connector.
- Установите .NET FrameWork 2.0 или выше.
- Установите EDI Connector.
Unable to find a version of the runtime to run this application
Cannot create process
Причина: На ПК не установлен Microsoft.NET FrameWork 2.0 или выше.
Решение:
- Удалите EDI Connector.
- Установите .NET FrameWork 2.0 или выше.
- Установить EDI Connector.
Can’t send xml: Could not find a part of the path ‘F:export’
Can’t send binaries: Could not find a part of the path ‘F:export’
Причина: Программа не может обратиться к указанной директории. Вероятно, что это путь к сетевому диску.
Решение: Используйте абсолютный путь. Пример: ‘\fs-7.szexport.local1COrdersexport’. Либо используйте безусловный путь через IP адрес. Пример: ‘192.168.131.70F:1COrdersexport’.
Can’t read listMB: Could not find a part of the path ‘F:importORDER’
Причина: Не находит директорию по типу файла или невозможно создать папку с именем типа файла в указанной директории импорта ‘F:import’. Возможно, что дело в сетевом диске.
Решение: Используйте абсолютный путь. Пример: ‘\fs-7.szexport.local1COrdersexport’. Либо используйте безусловный путь через IP адрес. Пример: ‘192.168.131.70F:1COrdersexport’.
Can’t send xml: Access to the path ‘\fs-7.szexport.local1COrdersexport’ is denied
Can’t send binaries: Access to the path ‘\fs-7.szexport.local1COrdersexport’ is denied
Причина: У пользователя, запускающего службу EdiServiceService, недостаточно прав для доступа в директорию.
Решение:
- Если служба EdiServiceService запущена под локальным пользователем, то используйте пользователя с администраторскими правами.
- Если службы находятся в Мой компьютер ⇒ Контекстное меню «Управление» ⇒ Службы и приложения, выберите службу EdiServiceService, затем в контекстном меню выберите «Запустить».
Can’t send xml: The given path’s format is not supported
Can’t send binaries: The given path’s format is not supported
Причина: Формат пути к файлам указан неверно/не указана маска файла.
Решение: Проверьте во вкладке «Соединения» поле «Путь экспорта». Директория для экспортируемых документов должна быть прописана только в одном месте (в поле «Путь экспорта», либо в «Расширенный экспорт»). При указании директории в «Расширенный экспорт» заполните маску для документа.
Необрабатываемое исключение в приложении. При нажатии кнопки «Продолжить» приложение проигнорирует ошибку и попытается продолжить работу. При нажатии кнопки «Выход» приложение немедленно завершит работу. Устройство не готово.
Причина: Приложение было запущено без прав администратора (Рис. 1).
Решение: Нажмите кнопку «Выход» и запустите приложение от имени администратора.
Ответ не является правильным XML
Причина: EDI Connector пытается скачать файл не xml-формата.
Решение:
- Во вкладке «Соединения» поставьте галочку в поле «Игнорировать сертификат».
- Отметьте галочкой поле «Выделить».
- Нажмите кнопку «Сохранить».
- Перезапустите службу (нажмите «Отправить/получить всё»).
Internal service error: Неправильное магическое число в заголовке GZip. Передача должна идти в поток GZip
Решение:
- Во вкладке «Соединения» измените адрес сервиса. Адрес soap.ediweb.ru/wsedi/services/EDIServiceSoap замените на https://service.ediweb.ru/wsedi/services/EDIServiceSoap.
- Отметьте галочкой поле «Выделить».
- Нажмите кнопку «Сохранить».
- Перезапустите службу.
java.rmi.ServerException: EJBException:; nested exception is:
javax.ejb.EJBException: Error in ‘lv.fis.edi.control.ejb.handlers.SendListChangeStateHandler.handle()’ while handle SendListChangeState event.; CausedByException is:
from m in class lv.fis.edi.comp.edi.UPDResponseModel where m.sendListId = ?
Решение:
Очистите файл status_cache.xml, который находится в папке, где установлен коннектор. По умолчанию: C:EdiConnectorbinstatus_cache.xml
В случае, если ошибка не решена, обратитесь в поддержку Ediweb.
Internal service error: Базовое соединение закрыто: Непредвиденная ошибка при передаче…
Решение:
Смените адрес SOAP на другой. Варианты адреса:
- https://soap.ediweb.ru/wsedi/services/platform
- https://service.ediweb.ru/wsedi/services/platform
IndoKnight, что идеально завернуть вам дал как Exception
семантика в рамках Java EE.. работа.
вот две единственные строки «bean provider», то есть вы и я, должны знать об исключениях в Java EE:
ваш bean полностью свободен для восстановления от любого типа исключения или ошибки, как вы считаете нужным, в отношении других ограничений, под которыми может находиться bean. Если вы оправились от исключения, то поздравляю-проблем нет anymore =)
соответствующим ограничением может быть, например, то, что» корпоративные компоненты, использующие демаркацию транзакций, управляемых контейнером, не должны использовать методы управления транзакциями, которые мешают границам демаркации транзакций контейнера», чтобы процитировать Java EE 7 учебник 48-2 страницы (вы хотите программно установить откат управляемой транзакции контейнера, используйте метод ejbcontext.setRollbackOnly()).
Вам также не рекомендуется, как и в любом типе приложения Java, обрабатывать Throwable
или Error
брошенный с очень низкого уровня. RuntimeException
теоретически считается в этой категории, поскольку он так лихо сигнализирует об «ошибке разработчика», которая похожа на» совершенно неожиданную», но мы все знаем, что это не так.
в основном, неожиданное исключение (исключения времени выполнения + другое дерьмо, которое мы предполагаем, происходит от кого-то другого) предполагается, что ваш код не может быть обработан и должен обрабатываться сервером. Сервер должен обрабатывать исключение» unhandleable» (посмотреть спецификация EJB 3.2, стр. 204), напечатав что-то об этом в журнале (я перейду к деталям немного позже!).
более конкретно..
вы спросили (И вот во что я верю или не верны):
все исключения приложений описанное выше должно быть брошено
непосредственно EJB клиенту?
да. и транзакция (если она активна) не должна откатываться, если вы явно не указываете, что она должна использовать атрибут отката ApplicationException
. Исключение Java-кода-это очень естественная вещь. Java EE не имеет намерения разрушать эту модель программирования. Так что вперед, бросьте проверенные исключения, как вам нравится, заставляя клиентов пытаться поймать те или отметьте исключения среды выполнения как исключения приложения и бросьте их тоже. Счастливого броска!
если системные исключения обернуты внутри javax.EJB-компонента.EJBException перед
бросая клиенту, затем javax.EJB-компонента.EJBException считаются
Системное Исключение?
да, но не по той причине, которую вы предоставляете. Чтобы быть ясным, нет типа SystemException. Это просто причудливая формулировка для описания таких исключений, которые большинство бобов там не могло произойти, и скорее всего, они происходят из контейнера EJB. Ваш код определенно не должен вызывать EJBException. Это, вероятно, только помешало бы уму сервера. Также вы не можете аннотировать исключение как @ApplicationException так как вы не владеете кодом, он предоставляется API Java EE. Вы можете расширить EJBException, но не имеет смысла маскировать ваш код как часть кодовой базы сервера. Наиболее главное, с EJBException расширяет RuntimeException, я думаю, что безопасно классифицировать EJBException как «исключение системного уровня».
Берегись Дьявола
некоторые пульт ДУ клиенты получат исключения remoteexception вместо исключения EJBException.
перехватчики что вы, возможно, даже не знаете в огромном проекте предприятия, может проглотить исключения, брошенные из вашего метода выполнение активной транзакции commit хотя у вас никогда не было планов позволить ему это сделать.
держу пари, вы думаете, что a подавленные исключением всегда извлекается с помощью Throwable.getCause(). Обратите внимание, что спецификация EJB 3.2 не говорит, что контейнер должен или должен щадить ссылку на подавленную причину. Фактически, единственное, что должен сделать контейнер, это зарегистрировать исключение. Тогда, если Боба нет одноэлементный экземпляр bean должен быть отброшен и больше никогда не использоваться. Кроме того, если компонент является управляемым сообщением компонентом, только тогда требуется «обернуть»исходное исключение. Как «обернуть» исключение не указано. Супер портативный прохладный код, вероятно, следует взглянуть на подобное.getCause() метод и Throwable.getSuppressed () тоже. Не ожидайте, что в вашем коде обработки всегда будет найдено исходное исключение.
асинхронные методы (методы публичного сеанса bean аннотированы @асинхронные), который возвращает void, не может распространять исключение на своего клиента. Таким образом, они не должны объявлять или исключения приложений (посмотреть спецификация EJB 3.2 страница 82). Обратите внимание, что при вызове асинхронного метода сервер может не предоставить потоковые ресурсы для обслуживания вашего запроса, и если это так, он должен бросить.. EJBException (страница 48)!
Вопросы: реестр контрактов
Ошибка при подписании сведения о БО
Здравствуйте! Кто-нибудь знает, что делать с ошибкой при подписании сформированных сведений о БО (реестр контрактов, регистрация нового ГК)?
java.lang.RuntimeException: javax.ejb.EJBTransactionRolledbackException: nested exception is: javax.ejb.EJBException: See nested exception; nested exception is: java.lang.RuntimeException: Error occurred while validating print form [printFormContentId = 281983921]. Ошибка при валидации по схеме.
-
IrinaI72 - Новичок
- Сообщений: 2
- Зарегистрирован: 08 апр 2019, 10:36
- Благодарил (а): 0 раз.
- Поблагодарили: 0 раз.
- Роль: Заказчик
- Пункты репутации: 0
Re: Вопросы: реестр контрактов
Da10 » 08 апр 2019, 13:30
Коллеги, такой вопрос. Если внести изменения в карточку контракта по причине технической ошибки (неверно указан бюджет) через функционал «внести изменения» -> «исправление сведений», это является нарушением, если уже больше 5 дней с момента заключения прошло или нет? При сохранении, вроде не ругается.
«Ребята! У нас две проблемы: Минобороны и пуговица. Мы пуговицу найти можем? Чисто теоретически? Можем. А с Минобороны… ничего. Вывод: ищем пуговицу.»
-
Da10 - Завсегдатай
- Сообщений: 851
- Зарегистрирован: 06 дек 2018, 10:15
- Благодарил (а): 7 раз.
- Поблагодарили: 23 раз.
- Роль: Заказчик
- Пункты репутации: 21
Re: Вопросы: реестр контрактов
kir_dfg » 08 апр 2019, 13:32
Da10 писал(а):Коллеги, такой вопрос. Если внести изменения в карточку контракта по причине технической ошибки (неверно указан бюджет) через функционал «внести изменения» -> «исправление сведений», это является нарушением, если уже больше 5 дней с момента заключения прошло или нет? При сохранении, вроде не ругается.
Нет, не является. Наоборот, устраняете нарушение. Если что, можно отбиться всегда.
Главное, чтобы это было именно исправление, а не внесение изменений в контракт.
Машины времени есть у каждого. Те, что переносят в прошлое, зовутся воспоминаниями, а те, что уносят в будущее — мечтами ©
-
kir_dfg - Профессор
- Сообщений: 12112
- Зарегистрирован: 19 дек 2016, 11:34
- Откуда: Юпитер-2
- Благодарил (а): 173 раз.
- Поблагодарили: 1534 раз.
- Роль: Заказчик
- Пункты репутации: 635
Re: Вопросы: реестр контрактов
Da10 » 08 апр 2019, 13:40
kir_dfg писал(а):
Da10 писал(а):Коллеги, такой вопрос. Если внести изменения в карточку контракта по причине технической ошибки (неверно указан бюджет) через функционал «внести изменения» -> «исправление сведений», это является нарушением, если уже больше 5 дней с момента заключения прошло или нет? При сохранении, вроде не ругается.
Нет, не является. Наоборот, устраняете нарушение. Если что, можно отбиться всегда.
Главное, чтобы это было именно исправление, а не внесение изменений в контракт.
Спасибо. Будем устранять)
«Ребята! У нас две проблемы: Минобороны и пуговица. Мы пуговицу найти можем? Чисто теоретически? Можем. А с Минобороны… ничего. Вывод: ищем пуговицу.»
-
Da10 - Завсегдатай
- Сообщений: 851
- Зарегистрирован: 06 дек 2018, 10:15
- Благодарил (а): 7 раз.
- Поблагодарили: 23 раз.
- Роль: Заказчик
- Пункты репутации: 21
Re: Ошибка при подписании сведения о БО
kir_dfg » 08 апр 2019, 14:19
IrinaI72 писал(а):Здравствуйте! Кто-нибудь знает, что делать с ошибкой при подписании сформированных сведений о БО (реестр контрактов, регистрация нового ГК)?
java.lang.RuntimeException: javax.ejb.EJBTransactionRolledbackException: nested exception is: javax.ejb.EJBException: See nested exception; nested exception is: java.lang.RuntimeException: Error occurred while validating print form [printFormContentId = 281983921]. Ошибка при валидации по схеме.
Здравствуйте. Давно вылезло? Если сегодня, то только ждать.
А так посмотрите, нет ли где длинных строк, пустых полей и прочего.
Машины времени есть у каждого. Те, что переносят в прошлое, зовутся воспоминаниями, а те, что уносят в будущее — мечтами ©
-
kir_dfg - Профессор
- Сообщений: 12112
- Зарегистрирован: 19 дек 2016, 11:34
- Откуда: Юпитер-2
- Благодарил (а): 173 раз.
- Поблагодарили: 1534 раз.
- Роль: Заказчик
- Пункты репутации: 635
Re: Обсуждение: обсуждение техподдержки и крики души
IrinaI72 » 08 апр 2019, 14:54
Отвечая на свой же вопрос, вдруг кому-то пригодится.. Если при подписании сформированных сведений о БО появляется ошибка на всю страницу java.lang. и т.д., вернитесь в Информацию о поставщике и проставьте там появившиеся после обновления поля «Наименование объекта почтовой связи» и «Номер ячейки».
-
IrinaI72 - Новичок
- Сообщений: 2
- Зарегистрирован: 08 апр 2019, 10:36
- Благодарил (а): 0 раз.
- Поблагодарили: 0 раз.
- Роль: Заказчик
- Пункты репутации: 0
Re: Вопросы: реестр контрактов
annmok » 08 апр 2019, 17:09
коллеги, добрый день.
ошибка perform publication contract with message, затем после нажатия на кнопку ок- internal server error. . И все, висит глухо, крутится, пока руками не наберёшь в строке поиска адрес заново. Другие контракты-не знаю, у меня не было пока шанса попробовать, не заключали больше ничего. Сейчас доеду до работы и попробую сформировать контракт вручную..
воюю с техподдержкой, ошибка сохраняется, была надежды что новый контракт смогу опубликовать..как бы не так:((( Подскажите,можт я, курица, делаю что-то неправильно..
Нажала подписать и разместить в модуле «заключение контрактов». Контракт ушел в ЕИС.
Потом зашла в Реестр контрактов,нажала сформировать сведения о контракте,выбрала нужную закупку, заполнила все и отправляю на размещение и контроль… по логике все верно… но блин ошибка,хоть ты убейся.
Количество символов в наименовании контракта небольшое. перевыбирать извещение по рекомендации ТП пробовала… Ставить гарантии по контракту (продукты!) пробовала.. а воз и ныне там. Сегодня 08 апреля.. контракт от 11 марта… каждый день начинаю утро с письма в ТП…
-
annmok - Завсегдатай
- Сообщений: 247
- Зарегистрирован: 17 мар 2016, 11:22
- Благодарил (а): 91 раз.
- Поблагодарили: 10 раз.
- Роль: Заказчик
- Пункты репутации: 11
Re: Вопросы: реестр контрактов
ДиМкА » 08 апр 2019, 17:38
annmok писал(а):воюю с техподдержкой, ошибка сохраняется, была надежды что новый контракт смогу опубликовать..как бы не так:((( Подскажите,можт я, курица, делаю что-то неправильно..Нажала подписать и разместить в модуле «заключение контрактов». Контракт ушел в ЕИС.Потом зашла в Реестр контрактов,нажала сформировать сведения о контракте,выбрала нужную закупку, заполнила все и отправляю на размещение и контроль… по логике все верно… но блин ошибка,хоть ты убейся.Количество символов в наименовании контракта небольшое. перевыбирать извещение по рекомендации ТП пробовала… Ставить гарантии по контракту (продукты!) пробовала.. а воз и ныне там. Сегодня 08 апреля.. контракт от 11 марта… каждый день начинаю утро с письма в ТП…
Сегодня такая же ошибка
ДиМкА писал(а):После обновления вернулась ошибка: при публикации контракта «Произошла ошибка performPublicationContractWithMessage»/»Internal Server Error».
Плагин переустановил, перезагрузился — не уходит.
Причем на разных машинах — одно и тоже.
Обсуждение: обсуждение техподдержки и крики души
post454648.html#p454648
-
ДиМкА - Профессор
- Сообщений: 7933
- Зарегистрирован: 01 ноя 2014, 00:31
- Благодарил (а): 13 раз.
- Поблагодарили: 1558 раз.
- Роль: Заказчик
- Пункты репутации: 589
Re: Вопросы: реестр контрактов
ДиМкА » 09 апр 2019, 09:19
Сегодня (после проведения регламентных работ) ошибка вроде ушла, направил на контроль контракт.
ДиМкА писал(а):После обновления вернулась ошибка: при публикации контракта «Произошла ошибка performPublicationContractWithMessage»/»Internal Server Error».
Плагин переустановил, перезагрузился — не уходит.
Причем на разных машинах — одно и тоже.
-
ДиМкА - Профессор
- Сообщений: 7933
- Зарегистрирован: 01 ноя 2014, 00:31
- Благодарил (а): 13 раз.
- Поблагодарили: 1558 раз.
- Роль: Заказчик
- Пункты репутации: 589
Вернуться в Работа заказчика
Кто сейчас на форуме
Зарегистрированные пользователи: ASGOR, Google [Bot]
Я пытаюсь запустить этот базовый код JPA/EJB:
public static void main(String[] args){
UserBean user = new UserBean();
user.setId(1);
user.setUserName("name1");
user.setPassword("passwd1");
em.persist(user);
}
Я получаю эту ошибку:
javax.ejb.EJBException: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: com.JPA.Database
Любые идеи?
Я ищу в Интернете, и причина, по которой я нашел, была:
Это было вызвано тем, как вы создали объекты, т.е. если вы явно задали свойство ID. Исправлено удаление идентификатора.
Но я не понял, что мне нужно изменить, чтобы заставить код работать?
Ответ 1
Скажем, у вас есть два объекта Album
и Photo
. Альбом содержит много фотографий, поэтому он имеет отношение от одного до многих.
Класс альбома
@Entity
public class Album {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
Integer albumId;
String albumName;
@OneToMany(targetEntity=Photo.class,mappedBy="album",cascade={CascadeType.ALL},orphanRemoval=true)
Set<Photo> photos = new HashSet<Photo>();
}
Класс фотографий
@Entity
public class Photo{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
Integer photo_id;
String photoName;
@ManyToOne(targetEntity=Album.class)
@JoinColumn(name="album_id")
Album album;
}
Что нужно сделать, прежде чем продолжать или объединить, нужно установить ссылку на альбом в каждой фотографии.
Album myAlbum = new Album();
Photo photo1 = new Photo();
Photo photo2 = new Photo();
photo1.setAlbum(myAlbum);
photo2.setAlbum(myAlbum);
Вот как присоединить связанный объект до того, как вы будете продолжать или сливаться.
Ответ 2
Ошибка возникает из-за того, что установлен идентификатор объекта. Спящий режим различает переходные и отдельные объекты, а persist
работает только с переходными объектами. Если persist
завершает удаление объекта (что будет связано с тем, что идентификатор установлен), он вернет ошибку «отсоединенный объект, прошедший для сохранения». Вы можете найти более подробную информацию здесь и здесь.
Однако это применимо только в том случае, если вы указали первичный ключ, который должен быть автоматически сгенерирован: если поле настроено всегда на ручной настройку, тогда ваш код работает.
Ответ 3
удалить
user.setId(1);
поскольку он автоматически генерируется на БД,
и продолжайте с помощью команды persist.
Ответ 4
Я получил ответ, я использовал:
em.persist(user);
Я использовал слияние вместо persist:
em.merge(user);
Но не знаю, почему упорство не сработало.: (
Ответ 5
если вы используете для создания стратегии id = GenerationType.AUTO
в своей сущности.
Заменяет user.setId (1)
на user.setId (null)
, и проблема решена.
Ответ 6
Я знаю, что он слишком поздно и уверен, что каждый получил ответ. Но немного больше, чтобы добавить к этому: когда установлен GenerateType, persist() на объекте должен получить генерируемый идентификатор.
Если уже установлено значение, заданное пользователем Id, hibernate рассматривает его как сохраненную запись и поэтому обрабатывается как отсоединенный.
если id равен null — в этой ситуации исключение нулевого указателя возникает, когда тип AUTO или IDENTITY и т.д., если идентификатор не генерируется из таблицы или секировки и т.д.
design: это происходит, когда таблица имеет свойство bean в качестве первичного ключа.
GenerateType должен быть установлен только тогда, когда идентификатор автогенерируется.
удалите это, и вставка должна работать с указанным пользователем идентификатором.
(это плохой дизайн, чтобы иметь свойство, отображаемое в поле первичного ключа)
Ответ 7
Здесь .perist() будет только вставлять запись. Если мы используем .merge(), он проверит, существует ли какая-либо запись с текущим идентификатором. Если она существует, она обновится, иначе она будет вставлять новую запись.
Ответ 8
У меня была эта проблема, и она была вызвана кешем второго уровня:
- Я сохранял объект, использующий hibernate
- Затем я удалил строку, созданную из отдельного процесса, который не взаимодействовал с кешем второго уровня
- Я сохранял другой объект с тем же идентификатором (мои значения идентификатора не сгенерированы автоматически)
Следовательно, поскольку кеш не был аннулирован, hibernate предположил, что он имеет дело с отдельным экземпляром того же объекта.
Ответ 9
Если вы установите id в своей базе данных как первичный ключ и автоинкремент, то эта строка кода неверна:
user.setId(1);
Попробуйте следующее:
public static void main(String[] args){
UserBean user = new UserBean();
user.setUserName("name1");
user.setPassword("passwd1");
em.persist(user);
}
Ответ 10
Другая причина ошибки в том, что объект объекта не реализует интерфейс Serializable
@Entity
@Table(name = OddInstance.objectName, uniqueConstraints = @UniqueConstraint(columnNames = {"alias"}))
@NamedQueries({
@NamedQuery(name=OddInstance.findByAlias,
query="from OddInstance where alias = :alias"),
@NamedQuery(name=OddInstance.findAll,
query="from OddInstance")
})
public class OddInstance implements Serializable {
// ...
}
I hope this time somebody can help me with this issue. I´m currently developing a web app which is built using EJB + JPA and at the end all i got is the error message: javax.ejb.EJBException and such error points out to the line 25 in the DAO local interface and also in line 31 in the class i named SessionLogin located into the package com.javarevolutions.ejb.bean into the EJB module. My questions is why does it say that the query named «Login.findByLoginAndPassword» isn’t focused through out the error message
Caused by: java.lang.NullPointerException
Here my code to get a better understanding of my problem:
Caused by: 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.$Proxy405.validaDatos(Unknown Source)
at com.javarevolutions.ejb.bean.__EJB31_Generated__SessionLogin__Intf____Bean__.validaDatos(Unknown Source)
at com.javarevolutions.jsf.bean.BeanLogin.validarLogin(BeanLogin.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.el.parser.AstValue.invoke(AstValue.java:275)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304)
at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
... 35 more
Caused by: java.lang.NullPointerException
at com.javarevolutions.ejb.dao.DAOLoginImpl.existUser(DAOLoginImpl.java:25)
at com.javarevolutions.ejb.bean.SessionLogin.validaDatos(SessionLogin.java:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1081)
at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1153)
at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4695)
at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:630)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:582)
at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:46)
at sun.reflect.GeneratedMethodAccessor175.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:582)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:140)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)
at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:369)
at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4667)
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4655)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212)
... 50 more
thanks in advance for the hint you can give me.
Note: This is my 2nd. inquiry i made in the forum and nobody gave me a single answer but i already solve the last issue.
public class DAOLoginImpl implements DAOLogin {
@PersistenceContext
EntityManager em;
@Override
public boolean existUser(Login entity) {
Query query = em.createNamedQuery("Login.findByLoginAndPassword");
query.setParameter("usuario", entity.getUsuario());
query.setParameter("contrasenia", entity.getPassword());
if (query.getSingleResult() != null) {
return true;
}
return false;
}
}
@Stateless
@LocalBean
public class SessionLogin {
public boolean validaDatos(VOLogin vo) {
System.out.println("User : " + vo.getUsuario());
System.out.println("Password : " + vo.getContrasenia());
DAOLogin dao = new DAOLoginImpl();
Login entity = new Login();
entity.setUsuario(vo.getUsuario());
entity.setPassword(vo.getContrasenia());
return dao.existUser(entity);
}
}
public Login() {
}
public Login(String usuario) {
this.usuario = usuario;
}
public Login(String usuario, String password, String nombre, int edad) {
this.usuario = usuario;
this.password = password;
this.nombre = nombre;
this.edad = edad;
}
public String getUsuario() {
return usuario;
}
public void setUsuario(String usuario) {
this.usuario = usuario;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public int getEdad() {
return edad;
}
public void setEdad(int edad) {
this.edad = edad;
}
@Override
public int hashCode() {
int hash = 0;
hash += (usuario != null ? usuario.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Login)) {
return false;
}
Login other = (Login) object;
if ((this.usuario == null && other.usuario != null) || (this.usuario != null && !this.usuario.equals(other.usuario))) {
return false;
}
return true;
}
@Override
public String toString() {
return "com.javarevolutions.ejb.entities.Login[ usuario=" + usuario + " ]";
}
}
code here
Я хочу сделать EJB-проект ИСПОЛЬЗОВАТЬ Intellij IDEA. Но в этом была ошибка. Мой проект имеет модель буксировки в проекте. Один — сервер, а другой — клиент. Я хочу запустить сервер и запустить клиент для выполнения функции sayHello., но получить не удалось.
Мой интерфейс SessionBean и интерфейс клиента
package com.ejb;
import javax.ejb.Remote;
@Remote
public interface HelloWorld {
public String sayHello(String world);
}
Мой класс SessionBean
import com.ejb.HelloWorld;
import javax.ejb.Stateless;
@Stateless(name = "HelloWorldEJB")
public class HelloWorldBean implements HelloWorld {
public HelloWorldBean() {
}
@Override
public String sayHello(String world) {
return "hello"+world;
}
}
Мой клиент Класс
package com.ejb;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.util.Hashtable;
public class HelloWorldClient {
private static HelloWorld lookupRemoteStatelessEjbBean() throws NamingException {
final Hashtable jndiProperties = new Hashtable();
jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
jndiProperties.put("jboss.naming.client.ejb.context", true);
final Context context = new InitialContext(jndiProperties);
String namespace="ejb:/EJBServer_war_exploded/HelloWorldEJB!com.ejb.HelloWorld";
return (HelloWorld) context.lookup(namespace);
}
public static void main(String[] args) throws NamingException {
HelloWorld helloWorld = lookupRemoteStatelessEjbBean();
System.out.println(helloWorld);
String s = helloWorld.sayHello("world");
System.out.println(s);
}
}
Мои свойства (это свойства помещены в папку src точно)
endpoint.name=client-endpoint
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port=8080
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.connection.default.username=admin
remote.connection.default.password=123456
Сначала я запускаю сервер и IntelliJ. IDEA автоматически помещает военную папку в JBOSS(WildFly) 11. Я посетил веб-сайт EJB amdin, а военная папка была точно на сервере. Код ошибки
Exception in thread "main" javax.ejb.NoSuchEJBException: EJBCLIENT000079: Unable to discover destination for request for EJB StatelessEJBLocator for "/EJBServer_war_exploded/HelloWorldEJB", view is interface com.ejb.HelloWorld, affinity is None
Я не знаю, как это решить, и я искал на bing и google. Ни у кого не было такого же вопроса, как я могу решить это?