エイリアスの下でJAAS認証を含むDB2データベースへのデータソースを構成したWebSphere 7で実行される多くのJAX-WS Webサービスのパッケージがあります。
ここで、DAO のロジックをテストしたいと思います。もちろん、エンティティ マネージャーがあります。そこで、このチュートリアルhttp://www.ibm.com/developerworks/rational/library/08/0219_jadhav/を部分的にガイドとして、アプリケーション クライアント プロジェクトを作成しました。
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>
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 is not supported 」というエラーが返されます。:
<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);
}
}
entitymanager の作成時に問題が発生することがわかりました。
entityManagerFactory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
entityManager = entityManagerFactory.createEntityManager(); // <-- here
私を手伝ってくれますか ?解決策を探す2日間:( .
更新:
jdbc/MyDB を jdbc/XXX に変更しても問題は同じであるため、私のアプリケーション クライアントはデータ ソースにクエリを実行していないと思います ( http://www-01.ibm.com/support/docview. wss?uid=swg21596108、「指定されたデータソースをルックアップできませんでした」というメッセージが表示されませんが、原因である可能性があります)。また、Websphere の管理コンソールでデータ ソースへの認証を無効にしようとしましたが、同じ結果が得られます。
これは、webservices のプロジェクトにある私の persistence.xml ファイルです (これは正常に動作します。問題は、Web サービスをテストするためではなく、テスト目的で DAO クラスを使用しているアプリケーション クライアントです)。
<?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 の初心者です。