﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-大博的BLOG-文章分类-EJB3.0</title><link>http://www.blogjava.net/swboo/category/24089.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 10 Oct 2007 19:43:57 GMT</lastBuildDate><pubDate>Wed, 10 Oct 2007 19:43:57 GMT</pubDate><ttl>60</ttl><item><title>用JBOSS群集EJB3实例</title><link>http://www.blogjava.net/swboo/articles/151452.html</link><dc:creator>大博的BLOG</dc:creator><author>大博的BLOG</author><pubDate>Tue, 09 Oct 2007 09:04:00 GMT</pubDate><guid>http://www.blogjava.net/swboo/articles/151452.html</guid><wfw:comment>http://www.blogjava.net/swboo/comments/151452.html</wfw:comment><comments>http://www.blogjava.net/swboo/articles/151452.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/swboo/comments/commentRss/151452.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/swboo/services/trackbacks/151452.html</trackback:ping><description><![CDATA[今天终于搞定了在JBOSS中群集EJB3中的无状态会话BEAN,心里总算松了一口2个月以来的长气,现在发出来给想无一样苦恼的人一个光明的大路<br />
<br />
环境<br />
MyEclipse5.5<br />
JBoss4.2.0<br />
测试目的:群集EJB3<br />
首先我门先启动JBOSS.下面我用%JBOSS%来代替JBOSS的跟目录<br />
在%JBOSS%\bin目录下先创建一个RUN.BAT的快捷方式然后,鼠标右击属性给新做的快捷方式加2个参数第1个参数是-C ALL 目的是让他启动ALL服务,第2个参数是-B 192.168.0.60都开出来了把是本机IP只有加了IP在可以让他被在局域内部被访问到.我做的是3台计算机的群集,所以3太机子上的JBOSS都的这么写注意写对IP.然后启动JBOSS OK环境就算OK了然后开始写EJB3<br />
写远程接口<br />
<br />
<p>public interface HelloRemote extends Serializable {</p>
<p>&nbsp;public String getString(int i);<br />
<br />
然后写本地接口<br />
</p>
<p>@Stateless<br />
@Clustered&nbsp;&nbsp;&nbsp;&nbsp; //EJB3群集的标签<br />
@Remote(HelloRemote.class)<br />
public class HelloRemoteService implements HelloRemote {</p>
<p>&nbsp;public String getString(int i) {<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;System.out.println("我被执行了第"+i+"次");<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;return null;<br />
&nbsp;}</p>
<p>}</p>
EJB写的很简单就是在服务器上打一句话而已,完了将EJB3打成JAR包部署到<br />
%JBOSS%\server\all\farm目录下,注意在这个目录发布完后,其他机子上同时会响应及其他机子上也会发布完成这个JAR包.下面开始运行这个EJB,当然要重新在局域网内找一台机子做客户端调用.<br />
首先在那台机子上将刚才的JAR包导入项目中完了写测试代码<br />
Public class EJBFactory {<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; public static Object getEJB(String jndipath) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Properties props = new Properties();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("java.naming.provider.url", "192.168.0.149:1099,192.168.0.60,192.168.0.51:1099");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("jnp.disableDiscovery", "true");<br />
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");<br />
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");<br />
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("java.naming.provider.url", "192.168.0.251:3700");<br />
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");<br />
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InitialContext ctx = new InitialContext(props);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ctx.lookup(jndipath);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (NamingException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
看清楚我写了3个IP地址,这样做的好处是随便那个机子挂掉其他机子一样可以运行<br />
测试代码<br />
<p>public class Test {<br />
public static void main(String[] args) {<br />
&nbsp;<br />
&nbsp;HelloRemote helloRemote =(HelloRemote)EJBFactory.getEJB("HelloRemoteService/remote");<br />
&nbsp;for(int i=0;i&lt;10;i++){<br />
&nbsp;&nbsp;helloRemote.getString(i);<br />
&nbsp;}<br />
}<br />
}<br />
运行测试代码我门可以发现在3台服务器上他会打印出结果.这是JBOSS自己的负载平衡功能帮助我门实现的,呵呵写完了,这简单的实现我郁闷了2个月,郁闷~~~呵呵希望能给研究EJB3集群的朋友一点帮助<br />
QQ58194033有问题我门可以继续探讨</p>
 <img src ="http://www.blogjava.net/swboo/aggbug/151452.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/swboo/" target="_blank">大博的BLOG</a> 2007-10-09 17:04 <a href="http://www.blogjava.net/swboo/articles/151452.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EJB3.0初看</title><link>http://www.blogjava.net/swboo/articles/130065.html</link><dc:creator>大博的BLOG</dc:creator><author>大博的BLOG</author><pubDate>Fri, 13 Jul 2007 05:35:00 GMT</pubDate><guid>http://www.blogjava.net/swboo/articles/130065.html</guid><wfw:comment>http://www.blogjava.net/swboo/comments/130065.html</wfw:comment><comments>http://www.blogjava.net/swboo/articles/130065.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/swboo/comments/commentRss/130065.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/swboo/services/trackbacks/130065.html</trackback:ping><description><![CDATA[<div>当EJB3.0加hibernate和标记语言后,哇哦,用起来太爽了夜,和在学校学的EJB2.1完全不一样了哦,不说看看代码就知道了</div>
<div>先写一个接口LOOK什么都不用继承的</div>
<div><font face=宋体>public interface QueryDAO {<br>&nbsp;&nbsp;&nbsp; public String ExecuteQuery(int index);<br>&nbsp;&nbsp;&nbsp; public void initdate();&nbsp;&nbsp;&nbsp;<br>}</font></div>
<div>然后看看实体类的写法一个字酷</div>
<div>
<p><font face=宋体>@SuppressWarnings("serial")<br>@Entity<br>@Table(name="DictionaryCatalog")<br>public class DictionaryCatalogEntity implements Serializable {<br>&nbsp;private Integer catalogId;<br>&nbsp;private String catalogName;<br>&nbsp;private String cataMemo;<br>&nbsp;private DictionaryTypeEntity dte;<br>&nbsp;private Set&lt;DirectoryData&gt; dce;<br>&nbsp;<br>&nbsp;@ManyToOne(cascade=CascadeType.ALL ,fetch=FetchType.LAZY,optional=false)<br>&nbsp;@JoinColumn(name="id")<br>&nbsp;public DictionaryTypeEntity getDte() {<br>&nbsp;&nbsp;return dte;<br>&nbsp;}<br>&nbsp;public void setDte(DictionaryTypeEntity dte) {<br>&nbsp;&nbsp;this.dte = dte;<br>&nbsp;}<br>&nbsp;@OneToMany(cascade=CascadeType.ALL ,fetch=FetchType.LAZY,mappedBy="dataId")<br>&nbsp;@OrderBy(value="dataId desc")<br>&nbsp;public Set&lt;DirectoryData&gt; getDce() {<br>&nbsp;&nbsp;return dce;<br>&nbsp;}<br>&nbsp;<br>&nbsp;public void setDce(Set&lt;DirectoryData&gt; dce) {<br>&nbsp;&nbsp;this.dce = dce;<br>&nbsp;}<br>&nbsp;@Id<br>&nbsp;@GeneratedValue<br>&nbsp;public Integer getCatalogId() {<br>&nbsp;&nbsp;return catalogId;<br>&nbsp;}<br>&nbsp;public void setCatalogId(Integer catalogId) {<br>&nbsp;&nbsp;this.catalogId = catalogId;<br>&nbsp;}<br>&nbsp;<br>&nbsp;@Column(name="catalogName" , nullable=true ,length=50)<br>&nbsp;public String getCatalogName() {<br>&nbsp;&nbsp;return catalogName;<br>&nbsp;}<br>&nbsp;public void setCatalogName(String catalogName) {<br>&nbsp;&nbsp;this.catalogName = catalogName;<br>&nbsp;}<br>&nbsp;@Column(name="cataMemo" ,nullable=true ,length=50)<br>&nbsp;public String getCataMemo() {<br>&nbsp;&nbsp;return cataMemo;<br>&nbsp;}<br>&nbsp;public void setCataMemo(String cataMemo) {<br>&nbsp;&nbsp;this.cataMemo = cataMemo;<br>&nbsp;}</font></p>
<p><font face=宋体>}</font></p>
<p>呵呵连数据库都自己生成了,你门说酷不</p>
<p>完了是会话BEAN</p>
<p><font face=宋体>@Stateless<br>@Remote ({QueryDAO.class})<br>public class QueryDAOBean implements QueryDAO {<br>&nbsp;&nbsp;&nbsp; @PersistenceContext<br>&nbsp;&nbsp;&nbsp; protected EntityManager em;</font></p>
<p><font face=宋体>&nbsp;&nbsp;&nbsp; public void initdate() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Query query = em.createQuery("select count(p) from Person p");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object result = query.getSingleResult();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (result == null || Integer.parseInt(result.toString()) == {&nbsp;&nbsp;&nbsp;</font><font face=宋体>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></p>
<p><font face=宋体>}<br>查询基本是上是写完了,看是不是很类似HIBERNATE的查询语言呵呵,但是EJB又封装了哈，现在EJB终于可以和SPRING想抗衡了哦,呵呵)</font></p>
<p>(此例子3个类没有任何关系,所以大家看看如何写就好咯,呵呵.后面我会写个例子让大家参考的)</p>
</div>
<img src ="http://www.blogjava.net/swboo/aggbug/130065.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/swboo/" target="_blank">大博的BLOG</a> 2007-07-13 13:35 <a href="http://www.blogjava.net/swboo/articles/130065.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>