3

WebLogic Server 10.3.5.0 を使用しており、EJB 2.x を使用しても問題はありませんでしたが、EJB3 をデプロイしたいのですが、動作しません。私は Java ee を初めて使用しますが、多くの情報を読みましたが、答えが見つかりませんでした。1. シンプルな電卓アプリケーションを作成する

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 はホーム インターフェイスを必要としません。
  2. EJB3 では、ejb 情報を記述子に指定する必要はありません。注釈は、サーバーの情報を提供する必要があります。

私は正しいですか?そして、何が問題になる可能性がありますか?

また、appc ツールを使用しようとしましたが、ホーム インターフェイスも見つかりませんでした。

事前にt​​hx!

すべての EJB エントリをクリーンアップしejb-jar.xmlweblogic-ejb-jar.xml最終的には機能しました。問題は、別の 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.jarクラスパスにがあります。calculator.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)

何が問題になる可能性がありますか?

4

1 に答える 1

1

Weblogic10.3.5はEJB3をサポートします。

SimpleCalculator?のテストウィンドウからBeanを呼び出そうとしましたConsoleか?このようにして、正しく機能することを確認できます。

展開の場合、.earファイルをDOMAIN_HOMES/applications/my_domain/フォルダーに配置するだけで、ファイルが自動的に展開されます。毎回コンソール展開を実行する必要はありません。

コンソールでBeanをテストした後SimpleCalculator、ルックアップを試すことができますが、今回は機能しますか?

于 2012-12-27T23:21:13.600 に答える