Невозможно получить доступ к файлу xsjs из браузера
Я новичок в SAP HANA и пытаюсь предоставить данные файла.xsjs через веб-браузер с помощью следующего URL:
hostname:80<instance#>/workspace/session/a00/data/services/retrieveData.xsjs
Тем не менее, я получаю следующую ошибку при попытке доступа к нему:
Эта ссылка не работает. Мы не смогли найти ресурс, к которому вы пытаетесь получить доступ. Это может быть с ошибкой или в настоящее время недоступно
Это файлы, которые я создал в проводнике проекта:
MYSCHEMA.hdbschema
schema_name="MYSCHEMA"
trendsData.hdbtable
table.schemaName = "MYSCHEMA";
table.tableType = COLUMNSTORE;
table.description = "NewDataSet Order trendsData";
table.columns = [
{name= "C"; sqlType = NVARCHAR; nullable = true; length=10; },
{name= "D"; sqlType = VARCHAR; nullable = true; length=5; },
{name= "DU"; sqlType = NVARCHAR; nullable = true; length=20; },
{name= "SA"; sqlType = DECIMAL; nullable = true; length=30; },
{name= "I"; sqlType = DECIMAL; nullable = true; length=30; },
{name= "G"; sqlType = DECIMAL; nullable = true; length=30; },
{name= "G"; sqlType = DECIMAL; nullable = true; length=20; },
{name= "STR"; sqlType = DECIMAL; nullable = true; length=30; }
];
table.primaryKey.pkcolumns = ["INVENTORY"];
orderId.hdbsequence
schema="MYSCHEMA";
start_with=2000000;
cycles=false;
depends_on_table="workspace.session.a00.data::trendData";
retrieveData.xsjs
$.response.contentType="text/html";
var output = "Helloworld";
var conn = $.db.getConnection();
var pstmt = conn.prepareStatement("select * from trendData");
var rs = pstmt.executeQuery();
if (!rs.next())
{
$.response.setBody( "Failed to retrieve data");
$.response.status = $.net.http.INTERNAL_SERVER_ERROR;
}
else
{
output=output + "This is the respose from my SQL: "
+ rs.getString(1);
}
rs.close();
pstmt.close();
conn.close();
$.response.setBody(output);
Все вышеуказанные файлы были успешно зафиксированы и активированы без каких-либо ошибок. Тем не менее, ошибка происходит в веб-браузере.
4 ответа
Вы уверены, что URL, который вы ввели в браузере, создан правильно?
URL должны быть построены следующим образом:
сервер: порт /repository_path/ имя_файла
Неправильный путь может быть причиной вашей проблемы. Пожалуйста, смотрите пример ниже:
ведущий: hanacloud
порт: 8000 (80 + номер_экземпляра)
Дерево репозитория SAP HANA:
mdo ->
сок ->
sflight ->
тест ->
test.xsjs
URL: hanacloud: 8000 / mdo / sap / sflight / test / test.xsjs
Ваш номер порта должен быть 8000 вместо 80, и убедитесь, что он не заблокирован в сети, как это обычно бывает, особенно в офисной сети.
Ваш оператор выбора не определяет схему. Кроме того, в качестве имени каталога таблицы обычно используется имя пакета:: имя таблицы. Кроме того, в вашем определении таблицы есть два столбца с одинаковым именем и неверной спецификацией первичного ключа.
Таким образом, я ожидаю, что выбор не удастся. В качестве первого шага я бы предложил попробовать
$.response.contentType = "text/plain";
$.response.setBody('hello world');
$.response.status = $.net.http.OK;
Как только вы запустите это, вы знаете, что веб-доступ работает. Мой следующий шаг будет заключаться в том, чтобы все обернуть в что-то вроде try / catch
var eString = "";
try {
//*
* your code goes here
*//
return; // do not forget this!
} catch (e) {
eString = "\nException.toString(): " + e.toString() + "\n";
var prop = "";
for (prop in e) {
eString += prop + ": " + e[prop] + "\n";
response.status = $.net.http.INTERNAL_SERVER_ERROR;
response.contentType = "plain/text";
response.setBody(eString);
return;
}
response.status = $.net.http.INTERNAL_SERVER_ERROR;
response.contentType = "plain/text";
response.setBody("something went badly wrong");
Это позволило бы точно определить, где именно ваш код не работает.
Пожалуйста, убедитесь, что файлы.xsaccess и.xsapp присутствуют и синтаксис. Также убедитесь, что файлы активированы.