私は最初のSeam+Androidアプリケーションを開発しており、予想どおりにいくつかの新しいシナリオに直面しています。
特にこのアプリでは、RESTサービスでのサーバー呼び出しの80%から90%が単純な同期を行うためのものであり、クライアントがしばらくの間使用されなくなったため、状態を維持しないことにしました。 )これらの呼び出しのためにサーバー側で状態を維持する意味はありません。
デバイスからサーバー側に送信されたオブジェクトを永続化する必要がある特定のルーチンがあり、このオブジェクトは特定のユーザーにバインドされます(私の意見では非常に一般的なシナリオです)。
それで、説明するためにいくつかのコードがあります。
ホームインターフェイスには、Seamによって注入されたユーザーがいます。
@Name("pesoHome")
public class PesoHome extends EntityHome<Peso> {
private static final long serialVersionUID = 6087763635317971234L;
@In
User user;
このホームインターフェイスを使用するRESTサービスが必要な場合よりも:
public class PesoRest{
@Logger
Log log;
@In(create = true)
UserPesquisa userPesquisa;
@In(create = true)
PesoHome pesoHome;
@POST
@Path("/cadastrar/{userEmail}")
@Consumes(MediaType.APPLICATION_JSON)
public Response cadastraPeso(@PathParam("userEmail") String email, String jsonString)
{
String json = jsonString;
System.out.println("String jSon no servidor ==>> " + json);
また、ホームインターフェイスでのユーザーインジェクションが原因で、実行時に次のエラーがトリガーされます。
Caused by: org.jboss.seam.InstantiationException: Could not instantiate Seam component: pesoHome
at org.jboss.seam.Component.newInstance(Component.java:2144)
... 46 more
Caused by: org.jboss.seam.RequiredException: @In attribute requires non-null value: pesoHome.user
リクエストの本文で、JSonオブジェクトがこのユーザーに関する情報を提供し、これにより、挿入されたuserPesquisa参照を使用してこのユーザーを回復できることに注意してください。ユーザーへの参照なしでシームコンポーネントを構築し、それよりもユーザーを構築して新しい会話に配置し、必要なホーム参照を挿入するという別のアプローチをとることができることを私は知っていますが...
私は疑問に思っていましたこれは一般的なシナリオであるため、おそらくこれにはもっと標準的なアプローチがあるはずです。助言がありますか?:)
[] s