Невозможно получить доступ к файлу 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 присутствуют и синтаксис. Также убедитесь, что файлы активированы.

Другие вопросы по тегам