0

サーバー側でデータベースにアクセスするためにapache open JPAを使用しています。エンティティ オブジェクトを取得するために、gwt クライアントからサーバーを呼び出そうとしていますが、この要求は常にエラー メッセージで失敗します: NoClassDefFoundError org/apache/openjpa/enhance/PersistenceCapable.

gwt.xml ファイルで拡張エンティティ クラスを定義しようとしましたが、役に立ちませんでした。

<set-configuration-property name="rpc.enhancedClasses" value="com.jobsin.domain.SystemUser,com.jobsin.domain.Keyword,com.jobsin.domain.Job">/

私のサーバー機能:

public  SystemUser getCurrentUser() 
throws InvalidUser{

    HttpServletRequest httpServletRequest = this.getThreadLocalRequest();
    HttpSession session =  httpServletRequest.getSession();
    SystemUser user=null;

    Cookie[] cookies = httpServletRequest.getCookies();
    SocialNetworkCookie cookie = network.generateCookieObject();
    if(!cookie.init(cookies)){
        session.invalidate();
        throw new InvalidUser(); // no user was connected, user need to login
    }

    //try get user details from db
    EntityManager em = factory.createEntityManager();
    SystemUserDAOImpl userdao = new  SystemUserDAOImpl(em);
    user = userdao.findUserByNetworkId(cookie.getMemberId());
         //make user detach
    em.close();

    return user;
}

SystemUser クラス:

@Entity
public class SystemUser implements Serializable
{
    /**
     * 
     */
    private static final long serialVersionUID = -1673271845552139219L;

    @Id
    @GeneratedValue
    private long id; 

    @NotNull
    private String firstName;

    @NotNull
    private String lastName;

    @NotNull
    @Column(unique=true)
    private String email;


    @Temporal(TemporalType.TIMESTAMP) 
    private Date lastSearch;

    @ManyToMany(cascade = CascadeType.ALL)
    private Set<Job> jobs = new HashSet<Job>();

    @ManyToMany(cascade = CascadeType.ALL)
    private Set<Keyword> keywords = new HashSet<Keyword>();
}
4

1 に答える 1

0

最も簡単な解決策は、OpenJPAバイナリをGWTクライアントのクラスパスに追加することです。

于 2013-02-14T22:18:52.260 に答える