2016-07-22 59 views
3

我设计了一个使用trireme-jdbc建立opensge数据库连接的数据层API。当我使用cygwin通过trireme命令运行文件时,代码运行稳定,但是当我使用命令'a127项目启动'通过apigeetool启动完整项目时,它将引发一些有关trireme的错误。 我已经使用通用池包进行数据库连接池与trireme-jdbc.Below是运行我的trireme但不是由a127文件。 这是apigee API,所以文件夹结构完全按照apigee标准进行,并且在此也使用了swagger。如何使用Apigeetool在Apigee上部署Trireme项目

var a127 = require('a127-magic'); 
var express = require('express'); 
var Pool = require('generic-pool').Pool; 
var jdbc = require('trireme-jdbc'); 
var app = express(); 

module.exports = app; // for testing 



// initialize a127 framework 
a127.init(function(config) { 

    // include a127 middleware 
    app.use(a127.middleware(config)); 

    var pool = new Pool(
     { 
      name : 'Suppllier Collaboration - @Anil', 
      create : function(callback) { 
       var connOpenedge = new jdbc.Database(
         { 
          url : 'jdbc:datadirect:openedge://serverhost:portno;DatabaseName=xxxxx', 
          properties : { 
           user : 'db_user', 
           password : 'db_password', 
          }, 
         }); 
       callback(null, connOpenedge); 
      }, 
      destroy : function(client) { 
       client.end(); 
      }, 
      max : 10, 
      min : 2, 
      idleTimeoutMillis : 30, 
      log : true 

     }); 

    // error handler to emit errors as a json string 
    app.use(function(err, req, res, next) { 
     console.log('we are just enter in app.js file'); 

    if (typeof err !== 'object') { 
     // If the object is not an Error, create a representation that appears to be 
     err = { 
     message: String(err) // Coerce to string 
     }; 
    } else { 
     // Ensure that err.message is enumerable (It is not by default) 
     Object.defineProperty(err, 'message', { enumerable: true }); 
    } 

    // Return a JSON representation of #/definitions/ErrorResponse 
    res.set('Content-Type', 'application/json'); 
    res.end(JSON.stringify(err)); 
    }); 

    pool.acquire(function(err, conn) { 
    if (err) { 
     throw err; 
    } else { 
     app.get("/getData", function(req, res) { 
     conn.execute('select * from "po" where "po-num" = ? and "vend-num" = ? ', 
       [4322452, 4301170 ], function(err, result, rows) { 

      if (err) 
       res.json("Sorry !Error to get data from symix...."); 

      else 
       res.json(rows); 
     }); 

    }); 
    } 
}); 


    var ip = process.env.IP || 'localhost'; 
    var port = process.env.PORT || 10010; 
    // begin listening for client requests 
    app.listen(port, ip); 
    console.log('we are inside app.js file'); 
    console.log('try this:\ncurl http://' + ip + ':' + port + '/hello?name=Scott'); 
}); 
+0

你说“抛出一些错误”。你能否提供错误的实际文字?另外 - 如果你问一个你知道实际存在的po-num和vend-num会发生什么? (显示的SQL似乎可能返回零行。) –

回答

1

我不是一个SQL的家伙,但它看起来对我来说,你的SQL是无效,或者它没有返回数据。

我会先用普通的SQL客户端来测试它。如果您没有其他设置,Progress会发布一个名为“sqlexp”的命令行工具。您应该能够从服务器的“proenv”窗口运行它,以查看该查询是否可用。

proenv> sqlexp -user userName -password pwd -db dbName -S port 

我想你可能有更好的运气编写SQL为:

select * from "PUB.po" where "PUB.po.po-num" IS NULL and "PUB.po.vend-num" IS NULL ; 
相关问题