ejb3.0入門執行個體

來源:互聯網
上載者:User

ejb3相對於ejb2開發方便了很多,所有的東西都可以用註解來完成。不用部署描述檔案。。。

jboss6/client下所有的jar包,都要放入classpath,把ejb服務端的介面打成jar包放入client,或者把介面java檔案copy過來

怎麼查看ejb容器的jndi呢?

在jboss啟動時,查看控制台

4:05:06,985 INFO  [JBossASKernel]   and supplies:
4:05:06,985 INFO  [JBossASKernel]      jndi:bean12/remote-com.ly.bean.Bean1
4:05:06,985 INFO  [JBossASKernel]      Class:com.ly.bean.Bean1
4:05:06,985 INFO  [JBossASKernel]      Class:com.ly.bean.Bean2
4:05:07,001 INFO  [JBossASKernel]      jndi:bean12/remote-com.ly.bean.Bean2
4:05:07,001 INFO  [JBossASKernel]     
jndi:bean12/remote
4:05:07,001 INFO  [JBossASKernel]      jndi:bean12

ejb服務端主要架構如下

─src
  ├─com
  │  └─ly
  │      ├─bean
  │      │      Bean1.java
  │      │      Bean2.java
  │      │      Bean3.java
  │      │
  │      └─impl
  │              Bean1Impl.java
  │              Bean2Impl.java
  │
  └─META-INF
          MANIFEST.MF

package com.ly.bean;import javax.ejb.Remote;@Remotepublic interface Bean1 {  public void sayBean1();}
package com.ly.bean;import javax.ejb.Remote;@Remotepublic interface Bean2 {  public void sayBean2();}

package com.ly.bean;import javax.ejb.Remote;@Remotepublic interface Bean3 {  public void sayBean3();}

package com.ly.impl;import javax.ejb.Stateless;import com.ly.bean.Bean1;import com.ly.bean.Bean2;@Stateless(name="bean12")public class Bean1Impl implements Bean1,Bean2 {    public void sayBean1() {      System.out.println("bean1.........");    }    public void sayBean2() {     System.out.println("bean2.........");    }}

package com.ly.impl;import javax.ejb.EJB;import javax.ejb.Stateless;import com.ly.bean.Bean1;import com.ly.bean.Bean2;import com.ly.bean.Bean3;@Stateless(name="bean3")public class Bean2Impl implements Bean3 {    @EJB(beanName="bean12")    Bean1 bean1;     Bean2 bean2;    public void sayBean3() {      bean1.sayBean1();      bean2.sayBean2();      System.out.println("bean3.........");    }    @EJB(mappedName="bean12/remote")    public void setBean2(Bean2 bean2) {        this.bean2 = bean2;    }}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

用戶端代碼如下:

import java.util.Properties;import javax.naming.Context;import javax.naming.InitialContext;import com.ly.bean.Bean3;/** * jboss黑屏用戶端輸出如下 * <br /> * 14:05:09,481 INFO  [org.jboss.bootstrap.impl.base.server.AbstractServer [6.0.0.Final "Neo"] Started in 34s:101ms<br />14:05:37,717 INFO  [STDOUT] bean1.........<br />14:05:37,733 INFO  [STDOUT] bean2.........<br />14:05:37,733 INFO  [STDOUT] bean3.........<br /> * <br /> * @author Administrator * */public class Client {  public static void main(String args[]) throws Exception{     Properties pro = new Properties();     pro.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");     pro.setProperty("java.naming.provider.url","localhost:1099");     pro.setProperty("java.naming.factory.url.pkgs","org.jboss.naming");     Context context =new InitialContext(pro);     Bean3 bean=(Bean3) context.lookup("bean3/remote");     bean.sayBean3();//遠程伺服器執行sayBean3方法       }}

在jboss啟動控制台輸出如下

n ajp-127.0.0.1-8009
14:05:09,481 INFO  [org.jboss.bootstrap.impl.base.server.AbstractServer] JBossAS
 [6.0.0.Final "Neo"] Started in 34s:101ms
14:05:37,717 INFO  [STDOUT] bean1.........
14:05:37,733 INFO  [STDOUT] bean2.........
14:05:37,733 INFO  [STDOUT] bean3.........

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.