2012-12-26 98 views
3

我使用了WebLogic Server 10.3.5.0,並且在其上使用EJB 2.x時沒有遇到任何問題,但我想部署EJB3並且它不起作用。我是java新手,但是我閱讀了很多信息,但沒有找到答案。我嘗試什麼: 1.創建我的簡單的計算器應用程序Weblogic不支持EJB3?

package test; 

import javax.ejb.Remote; 
import java.lang.annotation.*; 


@Remote 
public interface Calculator { 


    public int add(int x, int y); 
} 


package test; 


import javax.ejb.Stateless; 
import javax.ejb.Remote; 



@Stateless(name="CalculatorBean", mappedName="EJBCalculatorBean") 
@Remote(Calculator.class) 
public class CalculatorBean { 

    public int add(int x, int y){ 
     return x + y; 
    } 

} 

這裏是我的ejb-jar.xml中:

<?xml version="1.0"?> 


<ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/j2ee/ejb-jar_3_0.xsd" 
version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"> 


    <enterprise-beans> 


    <session> 
     <ejb-name>Calculator</ejb-name> 
     <remote>test.Calculator</remote> 
     <ejb-class>test.CalculatorBean</ejb-class> 
     <session-type>Stateless</session-type> 
     <transaction-type>Container</transaction-type> 
    </session> 
    </enterprise-beans> 

    <assembly-descriptor> 


    <container-transaction> 
     <method> 
      <ejb-name>Calculator</ejb-name> 
      <method-name>*</method-name> 
     </method> 
     <trans-attribute>NotSupported</trans-attribute> 
    </container-transaction> 
    </assembly-descriptor> 

</ejb-jar> 

和我weblogic-ejb-jar.xml

<?xml version="1.0"?> 
<!DOCTYPE weblogic-ejb-jar PUBLIC 
'-//BEA Systems, Inc.//DTD WebLogic 6.0.0 EJB//EN' 
'http://www.bea.com/servers/wls600/dtd/weblogic-ejb-jar.dtd'> 

<weblogic-ejb-jar> 


    <weblogic-enterprise-bean> 
     <ejb-name>Calculator</ejb-name> 
     <jndi-name>EJBCalculatorBean</jndi-name> 
    </weblogic-enterprise-bean> 



</weblogic-ejb-jar> 

我也有很簡單的application.xml。我把它打包成一個爆炸的EAR文件夾,然後我從weblogic控制檯安裝它。當我嘗試「激活更改」時,失敗的消息是服務器缺少主界面。

  1. 據我所知,EJB3不需要home接口。
  2. 在EJB3中,我不必在描述符中指定任何ejb信息。註釋必須提供服務器的信息。

我說得對不對?這有什麼問題?

我也嘗試使用appc工具,但它也錯過了家庭界面。

Thx提前!

我清理了我的ejb-jar.xmlweblogic-ejb-jar.xml中的所有EJB條目,並找到它的工作。問題是我無法從運行在不同JVM上的客戶端訪問我的bean。 這裏是我的客戶端代碼:

import java.util.Hashtable; 
import javax.naming.Context; 
import javax.naming.InitialContext; 
import test.Calculator; 

public class Test { 

    ; 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 

     { 
      try 

      { 
      Hashtable<String, String> env = new Hashtable<String, String>(); 
      env.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory"); 
      env.put(Context.SECURITY_PRINCIPAL,"myuser"); 
      env.put(Context.SECURITY_CREDENTIALS, "mypassword"); 
      env.put(Context.PROVIDER_URL,"t3://myweblogic:7001"); 
      InitialContext ctx = new InitialContext(env); 

      System.out.println("Initial Context created"); 

      Calculator calculator = (Calculator)ctx.lookup("EJBCalculatorBean#test.Calculator"); 

      System.out.println("lookup successful"); 
      System.out.println("Calling EJB method . . ."); 
      System.out.println(calculator.add(3, 6)); 
      System.out.println("Output will be in Managed server console"); 
      } 

      catch (Exception e) 
      { 
      e.printStackTrace(); 
      } 

    } 
    } 
} 

一個在我的類路徑中有wlclient.jar;javax.ejb.jar;calculator.jarcalculator.jar是我部署到服務器的一個(它包含Calculator.classCalculatorBean.class) 此客戶端工作正常,當我在weblogic使用相同的JVM上運行,但在不同的JVM這個錯誤出現:

Caused by: java.lang.ClassNotFoundException 
     ... 24 more 
javax.naming.NamingException: Unhandled exception in lookup [Root exception is org.omg.CORBA.MARSHAL: vmcid: SUN minor code: 257 completed: Maybe] 
     at weblogic.corba.j2ee.naming.Utils.wrapNamingException(Utils.java:83) 
     at weblogic.corba.j2ee.naming.ContextImpl.lookup(ContextImpl.java:291) 
     at weblogic.corba.j2ee.naming.ContextImpl.lookup(ContextImpl.java:227) 
     at javax.naming.InitialContext.lookup(InitialContext.java:392) 
     at Test.main(Test.java:37) 

什麼可以是問題嗎?

+0

您是否嘗試過'CalculatorBean'工具'計算器' –

+0

Thx Nayan,它是解決方案的一部分。 – Mike82

+0

@ Mike82:當你說你從ejb-jar.xml和weblogic-ejb-jar.xml中「清理了所有EJB條目」時,你究竟是什麼意思?你刪除了bean聲明嗎?請詳細說明 - 我遇到類似的問題。 – Stephan

回答

1

Weblogic 10.3.5確實支持EJB3。

你有沒有嘗試從Console測試窗口打電話給你SimpleCalculator豆?這樣你可以驗證它是否正常工作。

W.r.t.部署時,只需將.ear文件放入DOMAIN_HOMES/applications/my_domain/文件夾中即可自動部署,無需每次都進行Console部署。

在控制檯中測試SimpleCalculator bean後,可以嘗試查找,這次它是否工作?