2013-02-14 83 views
0

我使用Apache打開JPA訪問我的數據庫在服務器端。我試圖從我的gwt客戶端調用服務器以檢索實體對象,但這個請求總是失敗,並顯示錯誤消息:NoClassDefFoundError org/apache/openjpa/enhance/PersistenceCapable。客戶端PersistenceCapable NoClassDefFoundError序列化實體對象從服務器到客戶端使用gwt

我試圖在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>(); 
} 

回答

0

最簡單的解決方案是將OpenJPA二進制文件添加到GWT客戶端類路徑。

+0

openjpa jar位於WEB-INF/lib庫下。我使用gwt eclipse插件運行服務器(jeti)。還有什麼我應該做的? – user2022561 2013-02-15 07:04:19