WebLogic12c-EJB部署

未分类 , 发表评论

weblogic部署ejb可以通过jar、ear方式。 
两种部署ejb方式的步骤都是一致的 
1、启动domain,并登录控制台 

2、选择“部署”-》“安装”,如下图所示: 


3、选择ejb程序(这里以jar方式为例)(这里以jar方式为例,将我们的服务端EJB程序用myeclipse的export命令导出打成jar包,选择ejb-service.jar,如图所示: 


4、选择部署的目标,注意这里选择的是AdminServer、cluster,如图所示: 

【注意:这里选中AdminServer只是方便从jndi树中查看ejb服务,真正提供ejb服务的还是server1、server2】 

5、继续下一步,直到完成即可。部署成功之后,如图所示: 

可以看到类型为EJB,状态为活动。至此ejb应用已经部署成功,如何查看ejb的jndi呢?往下看。 

查看weblogic的jndi树: 
选择“服务器”-》“AdminServer”-》“配置”-》“一般信息”-》“查看JNDI树”,如图所示: 

点击上图的链接,打开新的页面,展现jndi的树结构,如下图所示: 

我们在jndi的树结构中找到ejb应用程序的jndi(例子中有两个remote的ejb,分别是SessionEJB、SwapEJBBean 
客户端调用时,需要使用右栏的“绑定名”作为jndi的名称,代码如下: 

Java代码  收藏代码
  1. package example.ejb;  
  2.   
  3. import java.util.Properties;  
  4.   
  5. import javax.naming.Context;  
  6. import javax.naming.InitialContext;  
  7.   
  8. public class TestWebLogicEJB {  
  9.   
  10.     public static void main(String[] args) throws Exception {  
  11.         Properties properties=new Properties();  
  12.         properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,“weblogic.jndi.WLInitialContextFactory”);  
  13.         properties.setProperty(Context.PROVIDER_URL,“t3://localhost:7101,localhost:7102”);  
  14.         properties.setProperty(Context.SECURITY_PRINCIPAL,“weblogic”);  
  15.         properties.setProperty(Context.SECURITY_CREDENTIALS,“11111111”);  
  16.           
  17.         Context context = new InitialContext(properties);  
  18.         SessionEJB session = (SessionEJB) context.lookup(“SessionEJB#example.ejb.SessionEJB”);  
  19.         session.addUser(“test1”);  
  20.         System.out.println(session.getUsers());  
  21.         session.addUser(“test2”);  
  22.         System.out.println(session.getUsers());  
  23.           
  24.         SwapEJB swap = (SwapEJB)context.lookup(“SwapEJBBean#example.ejb.SwapEJB”);  
  25.         System.out.println(swap.invoke(“test”));  
  26.     }  
  27.   
  28. }  



上面代码分别调用了两个remote的ejb服务。 
【注意点: 
1、Context.PROVIDER_URL,这里是指定了集群两个server的ip、port来负载ejb应用 
2、context.lookup,lookup需要制定jndi的名称,这里使用前面介绍的jndi绑定名 
】 

weblogic11g是支持ejb3的,可以直接使用注解来定义ejb服务了。而不像以前还要创建weblogic-ejb-jar.xml文件来定义。 
开发ejb3的程序步骤如下: 
1、定义接口(这里不是必须): 

Java代码  收藏代码
  1. package example.ejb;  
  2.   
  3. public interface SwapEJB {  
  4.     public abstract String invoke(String request);  
  5. }  



2、定义ejb的bean(这里以stateless为例): 

Java代码  收藏代码
  1. package example.ejb;  
  2.   
  3. import javax.ejb.Remote;  
  4. import javax.ejb.Stateless;  
  5.   
  6. @Stateless(mappedName = “SwapEJBBean”)  
  7. @Remote({SwapEJB.class})  
  8. public class SwapEJBBean implements SwapEJB {  
  9.     @Override  
  10.     public String invoke(String request) {  
  11.         return “remote response=” + request;  
  12.     }  
  13. }  


部署到weblogic下面,需要指定mappedName 

这个简单的ejb例子已放在附件中,有兴趣可以尝试打成jar包部署试试。 

ejb以jar的方式部署存在一些弊端,如果依赖很多第三方库,就需要增加到weblogic的classpath中。有两种方式(建议第一种方式): 
1、weblogic11g对于domain依赖的第三方库,可以直接添加到domain下面的lib文件夹中。如我的lib位置: 
D:\server\weblogic11\user_projects\domains\springside3\lib 
weblogic启动的时候,会把这个文件夹下面的jar追加到启动脚本的classpath后面 
2、手动编辑startWebLogic.cmd,增加第三方库的jar路径到classpath中 

如果以ear部署就方便许多,附件已贴上ear的包。部署方式没有任何差别,这里不介绍了。


自己的服务端的代码:

package org.luzhen.ejb;

/**
 * Ejb_Service local interface
 */
public interface Ejb_Service {
public abstract String saySomething(String s);
}

package org.luzhen.ejb;

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

/**
 * Session Bean implementation class Ejb_Service
 */

//这里得起名字 不然无法生成


@Stateless(mappedName = “HelloEJB”) 
@Remote
public class Ejb_ServiceBean implements Ejb_Service {

@Override
public String saySomething(String s) {
System.out.println(s);
return s;
}
}

发布的时候 把整个项目打成jar包 然后剪切到 myeclipse工作目录即可  然后通过weblogic 发布 部署:







发表评论

电子邮件地址不会被公开。 必填项已用*标注

昵称 *