MyEclipse10+JBoss7+EJB3.0 HelloWorld实例

当时写这个HelloWorld例子,自己遇到了好多问题,经过一番折腾终于搞定~。希望本篇博文能对想要学习EJB的新手同学有所帮助



1.打开MyEclipse10-->Windows-->Preferences-->MyEclipse-->Servers-->JBoss-->JBoss 7.x ,配置一下JBoss7服务器.注意:当时我分配256m就直接报错了!!

2.新建一个EJB Project,结构如图。


HelloWorld接口

package com.ejb;

public interface HelloWorld {
public String SayHello(String name);
}


两个子接口

LocalHelloWorld接口,该接口扩展了一个方法。
package com.ejb;

import javax.ejb.*;

public interface LocalHelloWorld extends HelloWorld {
public String LocalSay();
}

RemoteHelloWorld接口

package com.ejb;

public interface RemoteHelloWorld extends HelloWorld {

}


无状态EJB实例,实现以上两个接口

package com.ejb.impl;

import com.ejb.RemoteHelloWorld;
import com.ejb.LocalHelloWorld;
import javax.ejb.*;

@Stateless
@Local({LocalHelloWorld.class}) //本地接口
@Remote({RemoteHelloWorld.class})//远程接口
public class HelloWorldBean implements RemoteHelloWorld,LocalHelloWorld {
private int count;
public String SayHello(String name) {
// TODO Auto-generated method stub
count++;
return name+"说:HelloWorld,实现远程接口和本地接口:"+count;
}
public String LocalSay(){
return "这里是本地接口:"+count;
}
}

3.启动JBoss服务,将该EJB项目部署到JBoss

4.新建一个Web Project


①.jboss-ejb-client.properties文件内容:


endpoint.name=client-endpoint
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=127.0.0.1
remote.connection.default.port = 4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false


②.jboss-client.jar 可在JBoss7->bin->client 中找到。

③.HelloEJB.jar 就是将上面那个EJB项目中的com.ejb包打包为jar.

④.index.jsp

<%@ page language="java" import="java.util.*,javax.naming.*,com.ejb.*,javax.rmi.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>

<body>
Test WAR <br>
<%
Properties pro = new Properties();
pro.setProperty(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
try {
InitialContext ctx = new InitialContext(pro);

final String appName ="";
final String moduleName="HelloWorldEJBProject";
final String distinctName="";


Object obj=ctx.lookup("ejb:"+appName+"/"+moduleName+"/"+distinctName+"/HelloWorldBean!com.ejb.RemoteHelloWorld");

//测试远程接口
RemoteHelloWorld hello=(RemoteHelloWorld)obj;
out.println(hello.SayHello("King"));
//测试本地接口

LocalHelloWorld local = (LocalHelloWorld)ctx.lookup("ejb:"+appName+"/"+moduleName+"/"+distinctName+"/HelloWorldBean!com.ejb.LocalHelloWorld");
out.println(local.LocalSay());
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
%>
</body>
</html>


⑤.将web项目部署到JBoss,然后访问 http://localhost:8080/TestWAR/  (JBoss默认端口8080)

结果显示:King说:HelloWorld,实现远程接口和本地接口:1 这里是本地接口:1


⑥.将web项目再部署到Tomcat下,http://localhost:8081/TestWAR/

结果报异常:



至此,这个HelloWorld例子就完成了。下面总结一下。

EJB实现远程接口,就可以在EJB容器外被访问,需要添加一个配置文件和jar。

实现本地接口的EJB只能在容器内被访问,这也是为什么在tomcat下访问报异常的原因。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小米很好吃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值