2

我有一个包含许多在 WebSphere 7 中运行的 JAX-WS Web 服务的包,我在其中配置了一个 DB2 数据库的数据源,包括别名下的 JAAS 身份验证。

现在,我只想测试我的 DAO 的逻辑,当然,我有一个实体管理器。因此,我创建了一个应用程序客户端项目,部分由本教程http://www.ibm.com/developerworks/rational/library/08/0219_jadhav/指导,其中我有:

  1. 一个 application-client.xml

     <?xml version="1.0" encoding="UTF-8"?>
     <application-client version="5"
        xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application-client_5.xsd" metadata-complete="false">
    
    <display-name>ServiciosAcademicoTests</display-name>
    
    <resource-ref>
        <res-ref-name>ServiciosAcademicoTests</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Application</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>
    

  2. 一个 ibm-application-client-bnd.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <application-client-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-application-client-bnd_1_0.xsd"   version="1.0">
    
        <resource-ref name="ServiciosAcademicoTests" binding-name="java:comp/env/jdbc/MyDB">
        </resource-ref>
    
    </application-client-bnd>
    

当我运行测试时,它返回以下错误“不支持 Null userid ”。:

 <openjpa-1.2.1- (...) fatal general error> org.apache.openjpa.persistence.PersistenceException: **Null userid is not supported.** ERRORCODE=-4461

我尝试在 ibm-application-client-bnd.xml 中指定和身份验证,但我仍然收到相同的错误:

<?xml version="1.0" encoding="UTF-8"?>
<application-client-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-application-client-bnd_1_0.xsd"
version="1.0">

<resource-ref name="ServiciosAcademicoTests" binding-name="java:comp/env/jdbc/MyDB">
    <authentication-alias name="dmfloresNode01/XXX "/>
</resource-ref>

以防万一,我的单元测试是这样的:

public class CursosTest extends TestCase {

ICursoDAO cursoDAO; // From another project

Integer idAlumno = 123456;

String usuarioPortal = "xxx";

public void testCursosLlevados() throws Exception {

    cursoDAO = new CursoDAO(); 

    List<CursoLlevadoVO> lstCursos = cursoDAO
            .obtenerCursosLlevadosPorAlumno(idAlumno, usuarioPortal);

    if (lstCursos != null) {
        for (CursoLlevadoVO cursoLlevadoVO : lstCursos) {
            System.out.println(cursoLlevadoVO.getNombre());
        }
    }

    assertNotNull(lstCursos);
}

}

我检测到创建实体管理器时发生了问题:

entityManagerFactory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
entityManager = entityManagerFactory.createEntityManager(); // <-- here

请问你能帮帮我吗 ?两天寻找解决方案:(。

更新

我认为我的应用程序客户端甚至没有查询数据源,因为我将 jdbc/MyDB 更改为 jdbc/XXX 并且问题是相同的(http://www-01.ibm.com/support/docview. wss?uid=swg21596108,我没有收到“无法查找命名的数据源”消息,但这可能是一个原因)。我还尝试在 Websphere 的管理控制台中停用对数据源的身份验证,但我得到了相同的结果。

这是我在 webservices 项目上的 persistence.xml 文件(运行良好,问题是我的应用程序客户端使用 DAO 类只是为了测试目的,而不是为了测试 web 服务以防万一):

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
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">

<persistence-unit name="ServiciosAcademico">
    <jta-data-source>jdbc/MyDB</jta-data-source>
    <class>...</class>
    <properties>
        <property name="openjpa.jdbc.Schema" value="XXX"/>
    </properties>
    </persistence-unit>

. 这是我在 websphere 上的数据源,它在一定范围内:

在此处输入图像描述 在此处输入图像描述

第 3 天:

可能,当我删除数据源的别名时,我会收到相同的消息,因此应用程序客户端可以连接到数据源,但这没有使用任何授权方法。

在此处输入图像描述

谢谢你的帮助。我是 WebSphere 的新手。

4

0 回答 0