Connexion de base de données via WebLogic
Donc, j'ai une base de données MySQL, et j'ai une source de données sur une instance locale de WebLogic qui est connecté à la base de données. Je suis en train d'écrire un peu de code client qui va tout simplement se connecter et de requête. Je vais avoir des problèmes avec l'obtention d'une connexion à partir de la source de données. Voici mon code pour l'instant. Je suis en cours d'exécution WebLogic 12c.
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class ConnectionTest {
public static void main(String... args) {
ConnectionTest tCon = new ConnectionTest();
tCon.TestConnection();
}
public void TestConnection() {
Context ctx = null;
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Hashtable<String, String> props = new Hashtable<String, String>();
props.put("java.naming.factory.initial",
"weblogic.jndi.WLInitialContextFactory");
props.put("java.naming.provider.url", "t3://localhost:7001");
props.put("java.naming.security.principal", "weblogic");
props.put("java.naming.security.credentials", "welcome1");
ctx = new InitialContext(props);
DataSource ds = (DataSource) ctx.lookup("RegexDB");
System.out.println(ds);
DAO dao = new DAO();
conn = ds.getConnection();
stmt = conn.createStatement();
stmt.execute("select * from regular_ex");
rs = stmt.getResultSet();
ArrayList<HashMap<String, Object>> results = dao
.resultSetToArrayList(rs);
dao.printArrayList(results);
stmt.close();
conn.close();
} catch (NamingException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (stmt != null)
stmt.close();
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
Cela ne parvient pas à ds.getConnection()
avec l'exception suivante:
java.lang.ClassCastException: weblogic.jdbc.common.internal.ConnectionEnv cannot be cast to java.io.Serializable
at weblogic.iiop.IIOPOutputStream.writeObject(IIOPOutputStream.java:2285)
at weblogic.utils.io.ObjectStreamClass.writeFields(ObjectStreamClass.java:414)
at weblogic.corba.utils.ValueHandlerImpl.writeValueData(ValueHandlerImpl.java:235)
at weblogic.corba.utils.ValueHandlerImpl.writeValueData(ValueHandlerImpl.java:225)
at weblogic.corba.utils.ValueHandlerImpl.writeValue(ValueHandlerImpl.java:182)
at weblogic.iiop.IIOPOutputStream.write_value(IIOPOutputStream.java:1983)
at weblogic.iiop.IIOPOutputStream.write_value(IIOPOutputStream.java:2021)
at weblogic.iiop.IIOPOutputStream.writeObject(IIOPOutputStream.java:2285)
at weblogic.jdbc.common.internal.RmiDataSource_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:695)
at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:520)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:516)
at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
J'ai wlclient.jar, wlsafclient.jar et weblogic.jar dans mon buildpath. J'ai essayé toutes sortes de combinaisons de l'ajout/la suppression de ces jarres, mais j'obtiens toujours la même erreur, peu importe ce que je fais. Toute aide serait grandement appréciée.
J'ai déjà essayé. Ces pots sont à partir de mon serveur d'installation. Si je n'utilise que le weblogic.jar, j'obtiens l'exception suivante:Exception in thread "main" java.lang.NoClassDefFoundError: weblogic/sécurité/sujet/AbstractSubject
J'ai essayer avec weblogic 12c, j'ai juste couru le même code avec Weblogic 10, et cela a fonctionné correctement, juste avec weblogic.jar
Selon ce post sur le forum: kr.forums.oracle.com/forums/thread.jspa?threadID=940386, vous avez besoin de construire et d'utiliser ce pot: wlfullclient.jar. C'est ce qui explique comment le construire: docs.oracle.com/cd/E12839_01/web.1111/e13717/jarbuilder.htm
OriginalL'auteur Reid Mac | 2012-05-31
Vous devez vous connecter pour publier un commentaire.
Après avoir fait quelques recherches, je suis la suppression de mon ancienne réponse et de recommencer.
Il y a un grand tableau de types de clients dans le Oracle Doc pour WebLogic Clients Autonomes. Pour chaque type de client, répertorié, le tableau montre les fichiers jar requis. Pour certains types de clients, vous avez besoin pour construire un supplément de pot (wlfullclient.jar) et de l'inclure.
Espère que cette aide.
Faites-vous cela dans une JSP? J'ai pour définir les valeurs de propriété pour le contexte initial dans la mienne puisque c'est juste une application java cliente.
Oui, il y avait un commentaire de mprabhat ici il y a une minute, qui a expliqué que mon code ne fonctionne que lorsqu'il est exécuté au sein de l'Application Web. Cela explique pourquoi cela ne fonctionne pas pour vous.
Complètement réécrit ma réponse après des recherches sur la question un peu.
BINGO! Fonctionne comme un charme maintenant. Merci pour l'aide!
OriginalL'auteur Jeremy Goodell
J'ai également confrontés à ce problème et j'ai essayé d'ajouter "wlfullclient.jar" à mon répertoire pour le réparer mais je n'ai pas trouvé ce fichier jar dans le dossier d'installation de weblogic.
Mais à la fin, j'ai mis tous les fichiers jar requis formulaire de weblogic en utilisant setDomainEnv.cmd et il fonctionne très bien. Ici, nous n'avons pas de soins sur les qui fichiers jar requis ou pas, il suffit de définir le classpath pour tous les fichier jar requis pour votre programme.
Je suis à l'aide de Weblogic 11g.
OriginalL'auteur userBI
Dans Weblogic 12c, copiez le weblogic.jar fichier dans un autre répertoire. Renommez le fichier weblogic-classes.jar et puis générez le fichier jar à l'aide de wljarbuilder.
Ajouter le nouvellement créé wlfullclient.jar fichier sur votre Chemin de Classe dans eclipse.
OriginalL'auteur Pramit
Construire wlfullclient.jar et d'ajouter juste ce pot pour le build path.
Il a résolu le problème pour moi.
Par la façon dont weblogic.jar de Weblogic 12 est absent de certaines classes par rapport à weblogic.jar de Weblogic 10.3
OriginalL'auteur user5020099