【问题标题】:Unable to access xsjs file from browser无法从浏览器访问 xsjs 文件
【发布时间】:2013-08-07 15:17:28
【问题描述】:

我是 SAP HANA 的新手,并试图通过具有以下 url 的网络浏览器公开 .xsjs 文件数据:

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

上述所有文件均已成功提交并激活,没有任何错误。尽管如此,错误还是发生在网络浏览器中。

【问题讨论】:

    标签: hana hana-xs


    【解决方案1】:

    您确定您在浏览器中输入的 URL 是正确构建的吗?

    网址应按以下方式构建:

    服务器:端口/存储库路径/文件名

    错误的路径可能会导致您的问题。请看下面的例子:

    主机:hanacloud
    端口:8000(80 + instance_number)

    SAP HANA 存储库树
    mdo ->
    闷棍 ->
    飞行 ->
    测试 ->
    test.xsjs

    网址:hanacloud:8000/mdo/sap/sflight/test/test.xsjs

    【讨论】:

      【解决方案2】:

      您的端口号应该是 8000 而不是 80,并确保在网络上没有被阻塞,这通常是这种情况,尤其是在办公室网络中

      【讨论】:

        【解决方案3】:

        您的选择语句未指定架构。此外,表的目录名称通常是“包名::表名”。此外,您的表定义有两列具有相同的名称和无效的主键规范。

        因此,我希望选择失败。作为第一步,我建议尝试

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

        这将允许查明您的代码究竟在哪里失败。

        【讨论】:

          【解决方案4】:

          请确保存在 .xsaccess 和 .xsapp 文件以及语法。还要忍受文件被激活。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-12-04
            • 1970-01-01
            • 1970-01-01
            • 2019-01-19
            • 2014-05-14
            • 1970-01-01
            • 1970-01-01
            • 2014-03-22
            相关资源
            最近更新 更多