我創建一個Java類庫和EJB模塊,可以通過調用遠程接口EJB和它的實現類(會話bean)用於通過獨立客戶端用戶身份驗證的應用程序。我使用Netbeans 8和Glassfish 4.0。試圖運行它時,成功地構建應用程序,我得到了下面的堆棧後:爲JSF EJB應用正確的配置使用遠程接口
SEVERE: Exception during lifecycle processing
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: java.lang.NoClassDefFoundError: Lcom/manaar/security/services/remote/UserServiceRemote;
at com.sun.enterprise.web.WebApplication.start(WebApplication.java:168)
at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:291)
at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:352)
...
SEVERE: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: java.lang.NoClassDefFoundError: Lcom/manaar/security/services/remote/UserServiceRemote;
我下面的步驟是:
1)創建Java類庫,並與遠程接口填充它,實體類 2)創建EJB模塊,並實現類(會話bean填充此)和DAO方法 3)添加兩個項目以上的客戶端JSF Web應用程序 4)調用遠程接口在EJB的圖書館客戶端應用程序並使用這些方法來顯示用戶配置文件
個主要類別是: 1)Java類庫
@Remote
public interface UserServiceRemote {
public List<Users> findAllUsers();
public Users findByName(String userName);
public void createUser(Users newUser);
public void updateUser(Users updatedUsers);
public void deleteUser(Users userToDelete);
public void adminUpdateUser(Users aUpdatedUser);
@Entity
@Table(name = "SHA_USERS")
public class Users {
@Id
private String userName;
private String password;
2)EJB模塊
@Stateless
public class UserServiceImpl implements UserServiceRemote {
@EJB
private UsersDao dao;
@Override
public Users findByName(String userName) {
return dao.findByName(userName);
}
3)Java類庫和EJB模塊都在客戶端應用程序添加作爲項目
4)在客戶端應用程序的管理的Bean:
@ManagedBean
@SessionScoped
public class SecClientFull {
@EJB
private UserServiceRemote useServ;
private Users loggedUser;
private String userName;
public String showProfile() {
loggedUser = useServ.findByName(userName);
return "/Users/AppUserProfile";
}
public String getUserName() {
userName = FacesContext.getCurrentInstance().getExternalContext().getRemoteUser();
return userName;
}
...
}
在這個論壇和其他地方在線我看過幾篇關於GF3 bug的文章。我使用最新版本,所以我希望這不是一個錯誤,我只是簡單地配置了這個錯誤。
而且我不清楚我是否還需要到GlassFish-web.xml中(或sun-web.xml中)配置文件中添加任何配置的EJB的。我假定Java EE註釋是足夠的。
最後,我應該說我手動編碼這一點。我不確定使用Netbeans嚮導來創建庫和會話bean是確保配置正確的更好方法。
真的很感激任何意見或反饋,請讓我知道如果我需要提供更多的信息。提前致謝!
是的,我做過。我試圖壓縮代碼,但它在那裏,應用程序正在工作。非常感謝你! – 2014-10-27 16:53:41