Подключение к базе данных через WebLogic

Итак, у меня есть база данных MySQL и источник данных в локальном экземпляре WebLogic, который подключен к этой базе данных. Я пытаюсь написать клиентский код, который будет просто подключаться и запрашивать. У меня проблемы с получением соединения из источника данных. Вот мой код до сих пор. Я использую 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();
            }
        }

    }
}

Это не удается в ds.getConnection() со следующим исключением:

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)

У меня есть wlclient.jar, wlsafclient.jar и weblogic.jar в моем пути сборки. Я пробовал всевозможные комбинации добавления/удаления этих банок, но все равно получаю ту же ошибку, независимо от того, что я делаю. Любая помощь будет принята с благодарностью.


person Reid Mac    schedule 31.05.2012    source источник
comment
удалите все jar-файлы и просто используйте weblogic.jar. Убедитесь, что вы берете jar-файл из каталога ‹weblogic_installation_directory›\server\lib   -  person mprabhat    schedule 31.05.2012
comment
Я уже пробовал это. Эти банки взяты из моей установки сервера. Если я использую только weblogic.jar, я получаю следующее исключение: Исключение в потоке main java.lang.NoClassDefFoundError: weblogic/security/subject/AbstractSubject   -  person Reid Mac    schedule 31.05.2012
comment
Я должен попробовать с weblogic 12c, я только что запустил тот же код с Weblogic 10, и он работал правильно только с weblogic.jar   -  person mprabhat    schedule 31.05.2012
comment
Согласно этому сообщению на форуме: kr.forums.oracle.com/forums/ thread.jspa?threadID=940386 вам необходимо создать и использовать этот jar-файл: wlfullclient.jar. Это объясняет, как его построить: docs.oracle.com/cd /E12839_01/web.1111/e13717/jarbuilder.htm   -  person Jeremy Goodell    schedule 31.05.2012


Ответы (4)


Проведя небольшое исследование, я удаляю свой старый ответ и начинаю заново.

В Документе Oracle для Автономные клиенты WebLogic. Для каждого перечисленного типа клиентов в таблице показаны необходимые файлы JAR. Для определенных типов клиентов необходимо создать дополнительный файл jar (wlfullclient.jar) и включить его.

Надеюсь это поможет.

person Jeremy Goodell    schedule 31.05.2012
comment
Вы делаете это в JSP? Я должен установить значения свойств для начального контекста в моем, так как это просто клиентское java-приложение. - person Reid Mac; 31.05.2012
comment
Да, минуту назад здесь был комментарий от mprabhat, в котором объяснялось, что мой код будет работать только при запуске в веб-приложении. Так что это объясняет, почему это не сработает для вас. - person Jeremy Goodell; 31.05.2012
comment
Полностью переписал мой ответ после небольшого изучения проблемы. - person Jeremy Goodell; 31.05.2012
comment
БИНГО! Теперь работает как шарм. Спасибо за помощь! - person Reid Mac; 31.05.2012
comment
Я создал wlfullclient.jar и удалил все остальные банки. Я перекомпилировал, и это сработало. Должно быть, был отсутствующий класс, который был включен, когда я создавал wlfullclient.jar. - person Reid Mac; 01.06.2012
comment
wlfullclient.jar и jarbuilder устарели, начиная с версии WebLogic 12.1.3 + вместо них эквивалентные автономные клиенты. Вместо этого используйте один из эквивалентных автономных клиентов. Проконсультируйтесь с общественностью Oracle WebLogic Любая идея, что именно является альтернативой для этого? - person Gautam; 31.01.2016

Я также столкнулся с этой проблемой, и я попытался добавить «wlfullclient.jar» в свой каталог, чтобы исправить это, но я не нашел этот файл jar в папке установки weblogic.

Но, наконец, я установил все необходимые файлы jar из weblogic с помощью setDomainEnv.cmd, и он отлично работает. Здесь нам не нужно заботиться о том, какие файлы jar требуются или нет, он просто установит путь к классам для всех необходимых файлов jar для вашей программы.

Я использую Weblogic 11g.

person userBI    schedule 18.04.2013
comment
Вы должны собрать его, см. docs.oracle.com /cd/E28280_01/web.1111/e13717/ - person Dan Dar3; 18.10.2018

В Weblogic 12c скопируйте файл weblogic.jar в другой каталог. Переименуйте файл в weblogic-classes.jar, а затем создайте файл jar с помощью wljarbuilder.

Добавьте только что созданный файл wlfullclient.jar в путь к классам в eclipse.

person Pramit    schedule 07.06.2014

Соберите wlfullclient.jar и добавьте только этот jar в путь сборки. Это решило проблему для меня. Кстати, в weblogic.jar из Weblogic 12 отсутствуют некоторые классы по сравнению с weblogic.jar из Weblogic 10.3.

person user5020099    schedule 17.06.2015