Не удается подключиться к серверу SQL через сервлет, но можно подключиться к нему локально - PullRequest
0 голосов
/ 02 апреля 2011

Я пытаюсь подключиться к SQL Server через JDBC - для этого я создал класс Sahoodblib, который выполняет работу по подключению к базе данных и извлечению данных.Я создал еще один клиент, который называется Sahooclient - это обеспечивает интерфейс для отображения данных.Пока что система работает прекрасно.

Теперь я пытаюсь создать сервлет, который создает экземпляр Sahoodblib, и затем я продолжаю получать ClassNotFoundException, я отслеживаю его и получаю исключение на Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")

Теперь, это озадачило меня, потому что это прекрасно работает, когда я вызываю метод локально, но вызывает проблемы, когда я делаю это через браузер.Я уже включил TCP / IP и все другие соединения для SQL Server.

Здесь я получаю сообщение об ошибке:

   /* Initialize the servlet. */
@Override
public void init(ServletConfig config) throws ServletException {
    super.init(config);
    sdb = new Sahoodblib("ism6236","ism6236bo");
}

РЕДАКТИРОВАТЬ:

Вот как я подключаюсьв БД:

    public Sahoodblib(String uname, String pwd) {
    try {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        String url = "jdbc:sqlserver://localhost;" + 
            "databaseName=Travel;user=ism6236;password=ism6236bo;";
        cn = DriverManager.getConnection(url);
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(Sahoodblib.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(Sahoodblib.class.getName()).log(Level.SEVERE, null, ex);
    }
    set_max_tid();
}

1 Ответ

2 голосов
/ 02 апреля 2011

Класс com.microsoft.sqlserver.jdbc.SQLServerDriver находится в пути к классам при запуске автономного режима.Это не когда вы работаете как сервлет.

Вам нужно выяснить, как эти пути к классам отличаются.Когда вы запускаете клиент, вы указываете classpath, содержащий классы SQL Server в jar-файле?

  • Если вы это сделаете, вам нужно посмотреть на веб-сервер и выяснить, как снабдить его тем же файлом jar;обычно вы помещаете его в каталог WEB-INF / lib для вашего веб-приложения.
  • Если вы этого не сделаете, он будет включен в одно из мест по умолчанию для JVM.Клиент и веб-сервер используют одну и ту же JVM?

Я предположил, что у вас есть все компоненты SQL Server в JAR-файле.Если вы распаковали его куда-то, вашему classpath нужен каталог, в который он распакован, а не сам файл jar.

Более подробную информацию о том, где загрузчик классов будет искать классы, можно найти в http://download.oracle.com/javase/6/docs/technotes/tools/findingclasses.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...