私は、ネットワークを介して送信するために外部化したいカスタムオブジェクトのCN1 Webサービスを作成しました。 Webサービスの作成方法とCN1 Externalizableインターフェイスの操作方法に関する記事をいくつか読みました。コードネーム1 - 外部化可能オブジェクトがWebサービスでサポートされていません
SCHWERWIEGEND: Servlet.service() for servlet [CN1WebServiceServlet]
in context with path [/<myPath>] threw exception
java.io.IOException: Object type not supported: Post
:
これは、カスタム外部化オブジェクトを返すWebサービスメソッドに適しています、私は持っているが唯一の指標は、引数として外部化オブジェクトを受け取り方法は、私は次のエラーを取得するということです
オブジェクトは、オブジェクトIDを変更するか、またはレジスタ呼び出しをコメントアウトすると、IO例外の代わりにヌルポインタが発生するため、Utilクラスに正しく登録されます。
Postクラスが(すでに失敗最小限に簡素化)次のようになります。この後のオブジェクトは、私はpostオブジェクトを返すWebサービスメソッドを呼び出したときにうまく動作しますが、ないことを
public class Post implements Externalizable {
public int postid;
public int userid;
// default constructor needed for web service marshalling
public Post() {
}
@Override
public int getVersion() {
return 1;
}
@Override
public void externalize(DataOutputStream out) throws IOException {
Util.writeUTF("" + postid, out);
Util.writeUTF("" + userid, out);
}
@Override
public void internalize(int version, DataInputStream in) throws IOException {
this.postid = Integer.parseInt(Util.readUTF(in));
this.userid = Integer.parseInt(Util.readUTF(in));
}
@Override
public String getObjectId() {
return "Post";
}
注意私は、Webサービスに投稿・オブジェクトを送信:
// works
public static com.codename1.io.Externalizable getPostDetails(int postid) {
return getPostDetails(postid);
}
// fails
public static void sendPost(com.codename1.io.Externalizable post) {
sendPost(post);
}
私はここで逃したものの喪失でいます。
おかげで、うまくいけば、これを解決する必要がありますよろしくお使いのサーブレットコードの呼び出しUtil.register("Post", Post.class);
で