Вы видите, что Hibernate создает исключение, пытаясь использовать GenericConnection, который является внутренним макетом WebSphere java. sql .Connection. Видите ли, когда WebSphere запускает приложение, оно должно как можно раньше зарегистрировать преобразователи классов в процессе запуска приложения, поскольку после загрузки класса приложением ClassLoader он больше не подходит для дальнейшего преобразования (поставщики сохраняемости JPA могут улучшить постоянные классы и добавить дополнительные методы и поля, необходимые для внутренней работы). Class Transformer может быть получен только путем начальной загрузки EntityManagerFactor, который затем регистрируется в приложении ClassLoader, которое пропускает любой класс, загруженный после этого, через преобразователь, прежде чем он становится доступным для среды выполнения.
Проблема в том, что На этапе запуска приложения привязки ресурсов еще не установлены. Таким образом, единицы персистентности, которые используют ссылки java: comp / env в своих определениях, имеют зависимость от ресурса, который еще не разрешен.
Чтобы обойти эту проблему, для единиц персистентности, которые используют java: Источники данных comp / env, WebSphere загружает EntityManagerFactory специально для сбора Class Transformer (поэтому он не будет использоваться для создания EntityManager, обслуживающих внедрение приложений, что обычно бывает, если используются источники данных с глобальными именами JNDI), и если поставщик сохраняемости JPA запрашивает источник данных (который обычно используется для определения поставщика базы данных), он предоставляет фиктивный источник данных, GenericDataSource, который вы видите в своем журнале. OpenJPA и Eclipselink не выдают ошибку, но Hibernate делает.
Причина, по которой ваше приложение все еще работает, заключается в том, что этот EntityManagerFactory используется только для получения и регистрации Class Transformer, он не используется для предоставления EntityManagers для инъекции приложения. По сути, для каждого контекста компонента с его собственными привязками ссылок на ресурсы (т. Е. EJB Session Bean, веб-модуль и т. Д. c) создается новый EntityManagerFactory, который ищет источники данных в контексте этого компонента.
Вот почему, несмотря на ошибку в журнале, ваше приложение все еще работает.