2013-12-22 30 views
4

我試圖得到一個JavaEE的項目爲Glassfish 4.0上運行,但是當我嘗試刷新插件(堅持)到SQL Server數據庫,它拋出這個錯誤:無法加載類 - JDBC

org.omg.CORBA.MARSHAL: WARNING: 00810057: Could not load class com.microsoft.sqlserver.jdbc.SQLServerException vmcid: OMG minor code: 57 completed: Maybe 

該連接在Netbeans中運行,用於運行命令和生成實體類。

Bean方法:

public int addUser(UserDetails u) { 
    try{ 
     User uP = new User(u.getUserName(), u.isEnabled(), u.isAdmin()); 
     em.persist(uP); 
     return 0; 
    } 
    catch(Exception e) 
    { 
     throw new EJBException(e); 
    } 
} 

的persistence.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> 
    <persistence-unit name="LibraryBeanPU" transaction-type="JTA"> 
    <jta-data-source>JavaEE_Library</jta-data-source> 
    <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    <properties/> 
    </persistence-unit> 
</persistence> 

客戶:

public static void main(String[] args) { 
    LibraryClient lc = new LibraryClient(); 
} 

public LibraryClient() 
{ 
    LibraryFacadeRemote request = (LibraryFacadeRemote) getEJBBean("LibraryFacade"); 
    request.addUser(new UserDetails("admin", true, true)); 
} 

public Object getEJBBean(String beanName) { 
    try { 
     InitialContext ctx = new InitialContext(); 
     return ctx.lookup(beanName); 
    } catch (Exception ex) { 
     System.err.println("ERROR: while locating bean from the server " + ex.getMessage()); 
     return null;  
    } 
} 
+0

您能否發佈相關代碼。 – Adarsh

+0

從哪裏得到'OMG次要代碼:57已完成:可能' – Adarsh

+0

在哪個服務器上運行您的應用程序 – elsadek

回答

0

解決了這個問題,結果發現生成的實體類無法正確處理模式。即使您已將連接配置爲連接到特定模式,生成的實體類也不會在其製作的任何查詢中指定模式。另外生成的類不會在表名稱周圍使用方括號,這會導致其他問題。

3

persist方法可能發生故障的服務器端與​​時捕獲的包裹到EJBException

當客戶端代碼收到異常時,由於它不在客戶端ClassPath中,因此無法解組或反序列化該實例。

添加MS SqlServer的JDBC驅動程序在客戶端ClassPath要解決這個問題,但我會建議你避免將全服務器端異常到您的客戶端代碼得益於此建築指南:

  • 使用服務器上的日誌框架爲記錄與全堆棧跟蹤任何捕獲的異常和生成的事件UUID
  • EJBException,不換原來的異常,但創建一個錯誤消息String從原來getMessage()並指記錄的全棧的UUID - 跟蹤
相關問題