0

Java の「NetworkInterface」は GoogleAppEngine ではサポートされていないように思えますが、GAE での Java .net のサポートが限られていることを考えると驚くことではありません。ただし、BSON Java ライブラリを使用して文字列を BSON オブジェクト (ObjectID) に変換したいと考えています。問題は、ObjectId の生成の一部として以下を使用することです。

StringBuilder sb = new StringBuilder();
Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces();
while ( e.hasMoreElements() ){
    NetworkInterface ni = e.nextElement();
    sb.append( ni.toString() );
}
machinePiece = sb.toString().hashCode() << 16;

GoogleAppEngine を使用する場合、これは明らかに問題です。上記の場合に使用できるGAEでサポートされているNetworkInterfaceの代替手段を知っている人はいますか?

それは本当に私が私の髪を引き裂くようにしています!

参考までに、問題のあるコードは次のファイルの 356 行目と 362 行目の間にあります: https://github.com/mongodb/mongo-java-driver/blob/2.11.x/src/main/org/bson/types/ObjectId.ジャワ

4

2 に答える 2

0

それはあなたの目標が何であるかによって異なります.ローカル(仮想)マシンに基づいてハッシュコードを作成したい場合、このコードは大まかに実行しているように見えるので、使用するcom.google.appengine.api.utils.SystemProperty.instanceReplicaIdcom.google.appengine.api.modules.ModulesService.getCurrentInstanceId()、ハッシュコードを取得できます。

ハッシュコードを使用可能なネットワーク インターフェイスの一意の組み合わせに関連付ける必要がある場合は、別のプラットフォームを使用する必要があります。

于 2014-12-12T05:32:43.907 に答える