Статьи

Доступ Java к SQL Azure через драйвер JDBC для SQL Server

Я написал несколько постов ( здесь и здесь ) о Java и драйвере JDBC для SQL Server с обещанием в конечном итоге написать о том, как запустить приложение Java на платформе Windows Azure. В этом посте я выполню это обещание. В частности, я покажу вам две вещи: 1) как подключиться к базе данных SQL Azure из приложения Java, работающего локально, и 2) как подключиться к базе данных SQL Azure из приложения, работающего в Windows Azure. Вы должны рассматривать это как два упорядоченных шага в переводе приложения с локального запуска на SQL Server на запуск в Windows Azure с SQL Azure. На обоих этапах подключение к SQL Azure зависит от драйвера JDBC для SQL Server и SQL Azure .

В приведенных ниже инструкциях предполагается, что у вас уже есть подписка Windows Azure. Если у вас его еще нет, вы можете создать его здесь: http://www.microsoft.com/windowsazure/offers/ . (Для регистрации вам понадобится идентификатор Windows Live ID .) Я выбрал ознакомительную версию Free Trial , которая позволяет мне начинать бесплатно, пока я ограничиваю свое использование. (Это ограниченное предложение. Для получения полной информации о ценах см. Http://www.microsoft.com/windowsazure/pricing/ .) После приобретения подписки ее необходимо активировать, прежде чем начать ее использовать (инструкции по активации). будет предоставлено по электронной почте после регистрации).

Подключение к SQL Azure из приложения, работающего локально

Я предполагаю, что у вас уже есть приложение, работающее локально, и что оно использует драйвер JDBC для SQL Server. Если это не так, то вы можете начать с нуля, выполнив следующие шаги: Начало работы с драйвером JDBC для SQL Server . Если у вас есть приложение, работающее локально, процесс запуска этого приложения с серверной частью SQL Azure требует двух шагов:

1. Перенесите базу данных в SQL Azure. Это займет всего пару минут (в зависимости от размера вашей базы данных) с помощью мастера миграции SQL Azure — выполните действия, описанные в разделах Создание сервера SQL Azure и Создание базы данных SQL Azure в этом посте .

2. Измените строку подключения к базе данных в вашем приложении. После перемещения локальной базы данных в SQL Azure вам нужно всего лишь изменить строку подключения в приложении, чтобы использовать SQL Azure в качестве хранилища данных. В моем случае (с использованием базы данных Northwind) это означало изменение этого…

String connectionUrl = "jdbc:sqlserver://serverName\\sqlexpress;"
+ "database=Northwind;"
+ "user=UserName;"
+ "password=Password";

…к этому…

String connectionUrl = "jdbc:sqlserver://xxxxxxxxxx.database.windows.net;"
+ "database=Northwind;"
+ "user=UserName@xxxxxxxxxx;"
+ "password=Password";

(где xxxxxxxxxx — это идентификатор вашего сервера SQL Azure).

Подключение к SQL Azure из приложения, работающего в Windows Azure

Заголовок этого раздела может вводить в заблуждение. Если у вас есть локально запущенное приложение, использующее SQL Azure, все, что вам нужно сделать, это переместить ваше приложение в Windows Azure. Соединения части легко (см выше), но перемещение приложения Java в Windows Azure занимает немного больше работы. К счастью, Бен Лобо написал отличный пост, в котором показано, как использовать Windows Azure Starter Kit для Java для запуска приложения Java ( фактически, JSP- приложения), работающего в Windows Azure: Развертывание приложения Java в Windows Azure с помощью командной строки. Ant . (Если вы используете Eclipse, см. Пост Бена:Развертывание приложения Java в Windows Azure с Затмением .) Я не буду повторять свою работу здесь, но я буду взывать шаги , которые я сделал в изменении его инструкции , чтобы развернуть простую страницу JSP , которая подключается к SQL Azure.

1. Добавьте драйвер JDBC для SQL Server в архив Java. Один шаг в руководстве Бена (см. Раздел « Выбор среды выполнения Java ») требует, чтобы вы создали файл .zip из локальной установки Java и добавили его в приложение Java / Azure. Скорее всего, ваша локальная установка Java ссылается на драйвер JDBC, устанавливая переменную среды classpath . Когда вы создаете ZIP-файл из вашей установки Java, драйвер JDBC не будет включен, а переменная classpath не будет установлена ​​в среде Azure. Я нашел самый простой способ обойти это, просто добавив файл sqljdbc4.jar (вероятно, расположенный в  C: \ Program Files \ Драйвер JDBC Microsoft SQL Server \ sqljdbc_3.0 \ enu ) в\ lib \ ext каталог моей локальной установки Java перед созданием файла .zip.

Примечание . Драйвер JDBC можно поместить в отдельный каталог, включить его при создании папки .zip и установить переменную среды classpath в сценарии startup.bat . Но я обнаружил, что вышеуказанный подход проще.

2. Измените страницу JSP. Вместо кода, который Бен предлагает для файла HelloWorld.jsp (см. Раздел « Подготовка приложения Java »), используйте код из локально запущенного приложения. В моем случае я просто использовал код из этого поста после изменения строки подключения и внесения нескольких небольших изменений, специфичных для JSP:

<%@ page language="java"
contentType="text/html; charset = ISO-8859-1"
import = "java.sql.*"
%>

<html>
<head>
<title>SQL Azure via JDBC</title>
</head>
<body>
<h1>Northwind Customers</h1>
<%
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://xxxxxxxxxx.database.windows.net;"
+ "database=Northwind;"
+ "user=UserName@xxxxxxxxxx;"
+ "password=Password";
Connection con = DriverManager.getConnection(connectionUrl);
out.print("Connected.<br/>");
String SQL = "SELECT CustomerID, ContactName FROM Customers";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(SQL);

while (rs.next()) {
out.print(rs.getString(1) + ": " + rs.getString(2) + "<br/>");
}
}catch(Exception e){
out.print("Error message: "+ e.getMessage());
}
%>
</body>
</html>

Это оно!. Подводя итог шагов …

  1. Перенесите базу данных в SQL Azure с помощью мастера миграции SQL Azure.
  2. Измените соединение с базой данных в локально запущенном приложении.
  3. Используйте Windows Azure Starter Kit для Java, чтобы переместить приложение в Windows Azure. (Вам нужно будет следовать инструкциям в этом посте и инструкциям выше.)

Спасибо.

-Брайан