Не удается получить доступ к файлу 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.hdbequence

schema="MYSCHEMA";     
start_with=2000000;
cycles=false;    
depends_on_table="workspace.session.a00.data::trendData";

retriveData.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);

Все вышеперечисленные файлы были успешно зафиксированы и активированы без каких-либо ошибок. Тем не менее, ошибка возникает в веб-браузере.


person SAI    schedule 07.08.2013    source источник


Ответы (4)


Вы уверены, что URL-адрес, который вы ввели в браузере, построен правильно?

URL-адреса должны быть построены следующим образом:

сервер:порт/репозиторий_путь/имя_файла

Неправильный путь может быть причиной вашей проблемы. См. пример ниже:

хост: hanacloud
порт: 8000 (80 + номер_экземпляра)

Дерево репозитория SAP HANA:
mdo ->
sap ->
sflight ->
test ->
test.xsjs

URL-адрес: hanacloud:8000/mdo/sap/sflight/test/test.xsjs

person Maciej Donajski    schedule 08.08.2013

Ваш номер порта должен быть 8000 вместо 80 и убедитесь, что он не заблокирован в сети, что обычно бывает, особенно в офисной сети.

person ongis-nade    schedule 09.08.2013

В вашем операторе select не указана схема. Кроме того, имя каталога таблицы обычно "имя пакета::имя таблицы". Кроме того, ваше определение таблицы содержит два столбца с одинаковыми именами и недопустимой спецификацией первичного ключа.

Таким образом, я ожидаю, что выбор не удастся. В качестве первого шага я бы посоветовал попробовать

$.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");

Это позволит точно определить, где именно ваш код дает сбой.

person Udo Klein    schedule 02.09.2013

Убедитесь, что файлы .xsaccess и .xsapp присутствуют, а также синтаксис. Также терпеть, что файлы активированы.

person Vipin Menon    schedule 10.05.2015