次の問題があります。トランザクションの状態を「開始、終了、または継続」に設定できます。私はこれを設定し、トランザクションオブジェクトをサーバーに渡して、それを取得します。最初にチャームのように動作します(トランザクションが開始モードになっています)。しかし、オブジェクトを再送すると、今回は「進行中」モードで、サーバは「開始」モードでそれを見続けます。私はシリアライゼーション前の行のコードとデシリアライズ後の行をテストしましたが、これは間違いなく問題がある場所です。どんな助けも非常に高く評価されるでしょう。Javaのシリアル化。フィールドの変更値
シリアライズ
if ((query instanceof Transaction) && !(trx.getTransactionState()==Consts.trx_start)) System.out.println("Not start");
oos.writeObject(query);
oos.flush();
、デシリアライゼーション
while (true) {
Object statement = null;
try {
statement = ois.readObject();
if ((statement instanceof Transaction) && !(((Transaction) statement).getTransactionState()==Consts.trx_start)) System.out.println("Not start 2");
handle_statement(statement, socket);
} catch (IOException e) {
とトランザクションクラス:
public class Transaction extends Statement{
/**
*
*/
private static final long serialVersionUID = -2284996855537430822L;
Statement statement_list;
int trx_state;
/**
*
*/
public Transaction() {
trx_state = Consts.trx_start;;
}
/**
* @param statement
*/
public void setStatement(Statement statement) {
statement_list = statement;
}
public void setTransactionState(int state) {
trx_state = state;
}
public int getTransactionState() {
return trx_state;
}
/**
* @return
*/
public Statement getStatement() {
return statement_list;
}
*手のひらを顔に当てます*。私はフラッシュがトリックをするだろうと思った...リセットについて知りませんでした。ありがとう。魅力のように動作します – user1018513
オブジェクトグラフを保存するという設計目標を考えれば、それは唯一の可能性のある設計です。 – EJP