【问题标题】:Websphere Liberty 18.0.0.3 MySQL data source object not injectedWebsphere Liberty 18.0.0.3 MySQL 数据源对象未注入
【发布时间】:2018-10-19 16:31:13
【问题描述】:

我的 Web 应用程序没有获取在 server.xml 中配置的数据源。我在C:\wlp\usr\shared\resources\mysql文件夹下添加了sqlconnector jar(mysql-connector-java-8.0.12)

服务器.xml

<!--    Enable    features    -->                
    <featureManager>
    <feature>cdi-1.2</feature>
    <feature>jaxrs-2.0</feature>
    <feature>jdbc-4.0</feature>
    <feature>jndi-1.0</feature>
    <feature>jpa-2.0</feature>
    <feature>localConnector-1.0</feature>
    <feature>servlet-3.1</feature>
    </featureManager>

    <!--    Declare    the    jar    files    for    MySQL    access    through    JDBC.    -->
    <library id="MySQLLib">
      <fileset dir="${shared.resource.dir}/mysql" includes="mysql-connector-java-8.0.12.jar"/>
    </library>
    <!-- Declare the runtime database -->
    <dataSource jndiName="AdminWeb/jdbc/AdminDS" transactional="false">
      <jdbcDriver libraryRef="MySQLLib"/>
      <properties databaseName="admin" password="****" portNumber="3306" serverName="localhost" user="root"/>
    </dataSource>

@Resource(name = "AdminWeb/jdbc/AdminDS",lookup="AdminWeb/jdbc/AdminDS")
DataSource dataSource;

public UserEntity getAllUsers() {
    UserEntity user = new UserEntity();
   Connection connection = null;
    try {
        System.out.println("****************1");
        connection = dataSource.getConnection();
        System.out.println("2");

调用webapp时,getconnection方法抛出

[错误] SRVE0777E:应用程序类“com.fist.tools.admin.dao.UserDAO.getAllUsers:25”引发异常 java.lang.NullPointerException

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: mysql websphere-liberty


    【解决方案1】:

    数据源/服务器配置本身看起来不错。 @Resource 只能注入到 web 组件/ejb 组件中。您要注入的类是否符合该描述?

    【讨论】:

    • 我正在尝试从 JSP 调用 JAX-RS IBM Web 服务来显示用户详细信息。 Web 服务调用数据库来获取用户记录。
    • com.fist.tools.admin.dao.UserDAO 类是托管类吗?托管类包括 CDI bean、Servlet、EJB 和 JAX-RS 资源类
    • 嗨,Andy,User DAO 是一个与数据库通信的普通 Java 类。通过持久化上下文注释检索实体管理器实例,如下所示 @PersistenceContext (name="AdminWeb/jdbc/AdminDS") private EntityManager entitymanager;除了 server.xml 之外,我还需要添加任何其他配置吗?
    • 这意味着您尝试的使用超出了 Java EE 规范的范围。请尝试将您的 @Resource 用法移至 Andy 或我自己在我们之前的 cmets 中指定的托管类类型之一。然后,您可以让它将注入的 DataSource 实例传递给您的 UserDAO。或者,您可以考虑将 UserDAO 纯 java 对象转换为托管类(例如 CDI bean)是否有意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多