2017-07-11 9 views
0

NodeGSアプリケーションをSecureGatewayを使用してOracle DBに接続しようとしていますが、機能しません。SecureGatewayを使用してNodeJSアプリケーションとOracleDBを接続する

私がテストを実行し、私は私の接続をテストするための

var exec = require('child_process').exec; 
var sys = require('sys'); 
function puts(error, stdout, stderr) { sys.puts(stdout) } 
exec("ping 192.168.10.8", puts); 

を実行したとき、私は結果を持っていません。だから、私は自分のアプリと私のゲートウェイの間の接続を作成していないと思う。

DataConnectで実行していたときは正常に動作していました。

私はrequire('bluemix-secure-gateway')を使用して私のサーバーから情報を取得します。

トンネルを作成するために使用されている機能は

const tls = require('tls'); 
const net = require('net'); 

var creations = 0; // a running count of the number of open connections, when it becomes 0, the tunnel is closed. 
var server; // a server listening for certificate requests from the gateway server 

exports.create = function(port, options, callback) { 
    if(creations == 0) { 

     creations++; 

     //server not currently running, create one 
     server = net.createServer(function (conn) { 
      connectFarside(conn, options, function(err, socket) { 
       socket.pipe(conn); 
       conn.pipe(socket); 
      }); 
     }); 

     server.listen(port, function(){ 
      callback(); 
     }); 

    } else{ 
     //server already running 
     creations++; 
     callback() 
    } 
}; 

function connectFarside(conn, options, callback) { 
    try { 
     var socket = tls.connect(options, function() { 
      callback(null, socket); 
     }); 

     socket.on('error', function(err){ 
      console.log('Socket error: ' + JSON.stringify(err)); 
     }); 

    } catch(err) { 
     callback(err); 
    } 
}; 

exports.close = function(){ 

    creations--; 
    if(creations == 0){ 
     // close the server if this was 
     // the only connections running on it 
     server.close(); 
    } 
} 

ある私が持っている結果は、私の地元のネットです。

+0

Nodeアプリケーションを使用して、Secure Gatewayを呼び出してOracleDBにアクセスしようとしていますか?または、Secure Gatewayにノード・アプリケーションへの接続を確立させようとしていますか?その場合、OracleDB自体に接続されますか? –

+0

Secure Gatewayを呼び出してOracleDBに接続しようとしました。しかし、私はOracleから地元のネットには到着していません。 –

+0

Ricardoは、TLS接続を確立した後、どのようにデータベースと通信していますか? – Breedly

答えて

0

アプリケーションをSecure Gatewayに接続するには、送信先が提供するクラウドホスト:ポートを使用するだけです。接続を受け入れるには、Secure Gateway Clientをデータベースにアクセスできる場所で実行する必要があります。

たとえば、ローカルマシン上で動作するMongoデータベースに接続する場合は、リソースホスト名をlocalhostに設定し、リソースポートを27017に設定して宛先を作成できます。この宛先が作成されると、クラウドホスト:ポート(例:cap-sg-prd-3.integration.ibmcloud.com:23432)が割り当てられます。

私のアプリケーションが通常mongodb://localhost:27017/myprojectのような接続文字列でMongoに接続する場合、その接続はSecure Gatewayを経由してルーティングされるようにmongodb://cap-sg-prd-3.integration.ibmcloud.com:23432/myprojectに変更します。

+0

@ galen-keeneありがとうございました!それでおしまい。実際、私はいくつかのチュートリアルを読みましたが、明らかに私には説明しません。 –

関連する問題