You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keycloak Photoz示例部署Wildfly时EntityManager注入抛出空指针异常

Troubleshooting EntityManager Injection NullPointer in Keycloak Photoz Sample on Wildfly

Hey there, let's work through this EntityManager injection issue you're hitting with the Keycloak Photoz sample on Wildfly. Since this is an official sample, you're right—there shouldn't be inherent code bugs, so the problem is almost definitely tied to your Wildfly setup or deployment configuration. Here are some targeted steps to diagnose and fix it:

1. Verify Your Wildfly Data Source Configuration

EntityManager relies on a properly configured JTA data source in Wildfly. Double-check these details:

  • Open your Wildfly standalone.xml (or domain.xml if using domain mode) and look for the <datasources> section.
  • Ensure there's a data source with the exact JNDI name referenced in your persistence.xml (e.g., java:jboss/datasources/PhotozDS).
  • Confirm the data source is enabled and connects successfully to your database (check server logs for connection errors on startup).

2. Validate Your persistence.xml Setup

Since you already removed RESOURCE_LOCAL, make sure your persistence unit is configured for JTA (the correct mode for Wildfly):

<persistence-unit name="photoz" transaction-type="JTA">
    <jta-data-source>java:jboss/datasources/PhotozDS</jta-data-source>
    <!-- List all your entity classes here, or use <exclude-unlisted-classes>false</exclude-unlisted-classes> -->
    <class>com.photoz.model.Photo</class>
    <properties>
        <property name="hibernate.hbm2ddl.auto" value="update"/>
        <property name="hibernate.show_sql" value="true"/>
    </properties>
</persistence-unit>

Also, confirm the file is placed in the correct location:

  • For a WAR project: WEB-INF/classes/META-INF/persistence.xml
  • If using a separate EJB JAR: META-INF/persistence.xml inside the JAR

3. Ensure Injection Happens in a Container-Managed Bean

EntityManager injection only works in beans managed by the JEE container. Make sure your class using @PersistenceContext is annotated with a scope that triggers container management, like:

@Stateless // Or @ManagedBean, @ApplicationScoped, etc.
public class PhotoRepository {
    @PersistenceContext(unitName = "photoz")
    private EntityManager em;

    // Your database operations here
}

If you're trying to inject into a plain POJO (no container annotations), the EntityManager will always be null—containers only inject dependencies into managed beans.

4. Check Wildfly's JPA Subsystem Configuration

Wildfly needs its JPA subsystem enabled to handle EntityManager injection. In standalone.xml, ensure you have this section:

<subsystem xmlns="urn:jboss:domain:jpa:6.0">
    <jpa default-datasource="" default-extended-persistence-inheritance="DEEP"/>
</subsystem>

This is enabled by default in most Wildfly distributions, but it's worth confirming it wasn't accidentally removed.

5. Dig Into Wildfly Server Logs

The NullPointerException is just a symptom—real error details are in Wildfly's server logs (standalone/log/server.log). Search for:

  • Entries related to persistence-unit or EntityManagerFactory
  • Errors about missing data sources, invalid entity mappings, or failed persistence unit initialization
  • Deployment failures that might prevent the container from setting up the EntityManager

These logs will tell you exactly what's going wrong during the injection process.

6. Confirm Your Deployment Package is Correct

Unzip your generated WAR file and verify:

  • persistence.xml exists in WEB-INF/classes/META-INF/
  • All entity classes are present in WEB-INF/classes/ under their correct packages
  • No missing dependencies (like Hibernate libraries) are excluded from the WAR (though Wildfly provides most JEE APIs out of the box)

Start with checking the server logs first—they'll give you the most direct insight into why the EntityManager isn't being injected. Once you fix the underlying configuration issue, the null pointer should disappear.

内容的提问来源于stack exchange,提问作者Brett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:18:01