﻿<?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-HelloWorld 没有才能则难以胜任；没有兴趣则难以愉快；没有方法则事倍功半；没有努力则一事无成。-随笔分类-ejb3</title><link>http://www.blogjava.net/zhaochengming/category/31905.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 15 Jun 2008 00:41:51 GMT</lastBuildDate><pubDate>Sun, 15 Jun 2008 00:41:51 GMT</pubDate><ttl>60</ttl><item><title>第4章 会话Bean介绍</title><link>http://www.blogjava.net/zhaochengming/archive/2008/06/12/205273.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Thu, 12 Jun 2008 01:31:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2008/06/12/205273.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/205273.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2008/06/12/205273.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/205273.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/205273.html</trackback:ping><description><![CDATA[<p style="color: red">[4001] <span style="color: #000000">生命周期回调方法应遵循如下规则：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.对于直接定义在Bean类中的回调，其格式应该是public void &lt;Method()&gt;。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.对于Bean类单独提供(单个或多个)回调监听器类(拦截器)而言，其格式是public void&lt;METHOD(InvocationContext ctx)&gt;。java.interceptor.InvocationContext提供了调用上下文信息。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.不能够抛出应用异常，但可以抛出运行期异常。如果在事务中抛出了运行期异常，事务将回滚。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.不能够为回调监听器实施依赖注入。<br />
<table style="border-right: groove; border-top: groove; border-left: groove; width: 714px; border-bottom: groove; height: 230px" cellspacing="2" cellpadding="2" width="714" border="0">
    <tbody>
        <tr>
            <td><span style="font-size: 10pt">注释</span></td>
            <td><span style="font-size: 10pt">描述</span></td>
            <td><span style="font-size: 10pt">典型实现(无状态)</span></td>
            <td><span style="font-size: 10pt">典型实现(有状态)</span></td>
        </tr>
        <tr>
            <td><span style="font-size: 10pt">@PostConstruct</span></td>
            <td><span style="font-size: 10pt">在实例化Bean类后,Ejb容器会调用它</span></td>
            <td><span style="font-size: 10pt">根据Bean实例的需求来完成相应的初始化工作，比如将传入的参数值赋给成员变量。</span></td>
            <td><span style="font-size: 10pt">根据Bean实例的需求来完成相应的初始化工作，比如将传入的参数值赋值给成员变量。</span></td>
        </tr>
        <tr>
            <td><span style="font-size: 10pt">@PrePassivate</span></td>
            <td><span style="font-size: 10pt">在挂起Bean实例前，容器会立即调用它(由于内存中存在太多的Bean实例，因此需要将会话状态保存到磁盘中)</span></td>
            <td><span style="font-size: 10pt">未使用。</span></td>
            <td><span style="font-size: 10pt">释放Bean实例可能持有的任何资源。</span></td>
        </tr>
        <tr>
            <td><span style="font-size: 10pt">@PostActivate</span></td>
            <td><span style="font-size: 10pt">在激活Bean实例后，容器会立即调用它(由于客户需某Bean实例，因此需要将以前的会话状态交换到内存中)</span></td>
            <td><span style="font-size: 10pt">未使用。</span></td>
            <td><span style="font-size: 10pt">Bean实例重新获得所需要的任何资源，比如哪些在执行@PrePassivate回调期间释放的资源。</span></td>
        </tr>
        <tr>
            <td><span style="font-size: 10pt">@PreDestroy</span></td>
            <td><span style="font-size: 10pt">在结束对@Remove方法的调用之后，而在销毁Bean实例之前，Ejb容器会立即调用它</span></td>
            <td><span style="font-size: 10pt">为销毁Bean实例做准备。释放已分配给它的所有资源。</span></td>
            <td><span style="font-size: 10pt">为销毁Bean实例做准备。释放已分配给它的所有资源。</span></td>
        </tr>
    </tbody>
</table>
<br />
</span></p>
      <img src ="http://www.blogjava.net/zhaochengming/aggbug/205273.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2008-06-12 09:31 <a href="http://www.blogjava.net/zhaochengming/archive/2008/06/12/205273.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EJB client调用EJB3 (转) http://jalyspace.spaces.live.com/blog/cns!BBFE3C83B4EE964B!223.entry</title><link>http://www.blogjava.net/zhaochengming/archive/2008/06/02/205342.html</link><dc:creator>helloworld2008</dc:creator><author>helloworld2008</author><pubDate>Mon, 02 Jun 2008 07:18:00 GMT</pubDate><guid>http://www.blogjava.net/zhaochengming/archive/2008/06/02/205342.html</guid><wfw:comment>http://www.blogjava.net/zhaochengming/comments/205342.html</wfw:comment><comments>http://www.blogjava.net/zhaochengming/archive/2008/06/02/205342.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaochengming/comments/commentRss/205342.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaochengming/services/trackbacks/205342.html</trackback:ping><description><![CDATA[<h4 id="subjcns!BBFE3C83B4EE964B!223" style="margin-bottom: 0px">&nbsp;
<h4 style="margin-bottom: 0pt">&nbsp;<span style="font-size: 10.5pt; color: #333333; line-height: 185%; font-family: Verdana">EJB client</span><span style="font-size: 10.5pt; color: #333333; line-height: 185%">调用</span><span style="font-size: 10.5pt; color: #333333; line-height: 185%; font-family: Verdana">EJB3 (</span><span style="font-size: 10.5pt; color: #333333; line-height: 185%">转</span><span style="font-size: 10.5pt; color: #333333; line-height: 185%; font-family: Verdana">)</span></h4>
<p style="text-align: left" align="left"><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">当你的</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">EJB3</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">是</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">deploy to jboss</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">的情况下，</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">ejb client</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">调用</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">EJB3</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">分两种情况：</span></p>
<p style="text-indent: -18pt; text-align: left" align="left"><strong><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">1)</span></strong><strong><span style="font-size: 7pt; color: #333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong><strong><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">发布在</span></strong><strong><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">jboss</span></strong><strong><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">的</span></strong><strong><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">web app</span></strong><strong><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">作为</span></strong><strong><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">client</span></strong><strong><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">来调用</span></strong><strong><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">EJB</span></strong></p>
<p style="text-align: left" align="left"><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">EJB</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">和调用</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">EJB</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">的</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">WEB </span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">应用都发布在</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">Jboss </span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">集成环境下。在</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">Jboss</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">下发布</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">WEB </span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">应用，需要把</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">WEB </span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">应用打包成</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">war </span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">文件。另外</span><strong><span style="font-size: 9.5pt; color: red; font-family: 宋体">在此环境下调用</span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: Verdana">EJB </span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: 宋体">不需要把</span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: Verdana">EJB </span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: 宋体">的接口类放入</span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: Verdana">/WEB-INF/classes/</span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: 宋体">目录中</span></strong><strong><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">，否则在调用</span></strong><strong><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">Stateful Bean </span></strong><strong><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">就会发生类型冲突，引发下面的例外</span></strong></p>
<p style="text-align: left" align="left"><span style="font-size: 9.5pt; color: red; font-family: Verdana">java.lang.ClassCastException: $Proxy84</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">org.apache.jsp.StatefulBeanTest_jsp._jspService(org.apache.jsp.StatefulBeanTest_jsp:55)</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">如果</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">EJB</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">和调用</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">EJB</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">的</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">WEB </span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">应用都发布在</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">Jboss </span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">集成环境下，那么</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">EJB</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">的</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">Local</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">或</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">Remote</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">接口都可以被调用</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">发布在</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">Jboss </span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">下的客户端不需要明确设置</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">JNDI </span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">访问的上下文环境，可以直接通过</span></p>
<p style="text-indent: 24pt; text-align: left" align="left"><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">InitialContext ctx = new InitialContext()</span></p>
<p style="text-indent: 18pt; text-align: left" align="left"><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">获得上下文环境，容器会自动赋给</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">InitialContext </span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">正确的环境，例如：</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: Verdana">InitialContext ctx = </span><span style="font-size: 9pt; color: #800054; font-family: Verdana">new </span><span style="font-size: 9pt; color: black; font-family: Verdana">InitialContext();</span><span style="font-size: 9pt; color: #339a66; font-family: Verdana">//</span><span style="font-size: 9pt; color: #339a66; font-family: 宋体">客户端和</span><span style="font-size: 9pt; color: #339a66; font-family: Verdana">jboss</span><span style="font-size: 9pt; color: #339a66; font-family: 宋体">运行在同一个</span><span style="font-size: 9pt; color: #339a66; font-family: Verdana">jvm,</span><span style="font-size: 9pt; color: #339a66; font-family: 宋体">不需要传入</span><span style="font-size: 9pt; color: #339a66; font-family: Verdana">props</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: Verdana">HelloWorld helloworld = (HelloWorld) ctx.lookup(</span><span style="font-size: 9pt; color: #2900ff; font-family: Verdana">"HelloWorldBean/remote"</span><span style="font-size: 9pt; color: black; font-family: Verdana">);</span></p>
<p style="text-indent: 18pt; text-align: left" align="left"><span style="font-size: 9.5pt; color: red; font-family: 宋体">如果硬给</span><span style="font-size: 9.5pt; color: red; font-family: Verdana">InitialContext </span><span style="font-size: 9.5pt; color: red; font-family: 宋体">设置了访问属性，反而会带来不可移植的问题</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">，因为你的应用有可能部署在</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">weblogic </span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">等应用服务器。（</span><span style="font-size: 9.5pt; color: blue; font-family: 宋体">本教程考虑到部分同学可能需要在独立的</span><span style="font-size: 9.5pt; color: blue; font-family: Verdana">J2se </span><span style="font-size: 9.5pt; color: blue; font-family: 宋体">中调用</span><span style="font-size: 9.5pt; color: blue; font-family: Verdana">EJB</span><span style="font-size: 9.5pt; color: blue; font-family: 宋体">，为了教学的方便，把访问属性都设上了，这样不管在</span><span style="font-size: 9.5pt; color: blue; font-family: Verdana">jboss</span><span style="font-size: 9.5pt; color: blue; font-family: 宋体">、</span><span style="font-size: 9.5pt; color: blue; font-family: Verdana">j2se </span><span style="font-size: 9.5pt; color: blue; font-family: 宋体">或独立</span><span style="font-size: 9.5pt; color: blue; font-family: Verdana">tomcat</span><span style="font-size: 9.5pt; color: blue; font-family: 宋体">，都能获得正确的</span><span style="font-size: 9.5pt; color: blue; font-family: Verdana">InitialContext</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">）</span></p>
<p style="text-indent: -18pt; text-align: left" align="left"><strong><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">2)</span></strong><strong><span style="font-size: 7pt; color: #333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong><strong><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">在单独的</span></strong><strong><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">Tomcat</span></strong><strong><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">或</span></strong><strong><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">J2SE</span></strong><strong><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">（如</span></strong><strong><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">junit test</span></strong><strong><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">）中调用</span></strong><strong><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">EJB</span></strong></p>
<p style="text-align: left" align="left"><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">在正式的生产环境下，大部分调用</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">EJB </span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">的客户端可能是单独的</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">Tomcat </span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">或</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">Resin</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">。下面介绍如何在单独的</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">Tomcat</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">服务器中调用</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">EJB</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">。</span><span style="font-size: 9.5pt; color: red; font-family: 宋体">在单独的</span><span style="font-size: 9.5pt; color: red; font-family: Verdana">Tomcat </span><span style="font-size: 9.5pt; color: red; font-family: 宋体">服务器中调用</span><span style="font-size: 9.5pt; color: red; font-family: Verdana">EJB </span><span style="font-size: 9.5pt; color: red; font-family: 宋体">需要有以下步骤</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">：</span></p>
<p style="text-indent: -42.75pt; text-align: left" align="left"><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">A)</span><span style="font-size: 7pt; color: #333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 9.5pt; color: red; font-family: 宋体">把调用</span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: Verdana">EJB </span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: 宋体">所依赖的</span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: Verdana">Jar </span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: 宋体">包拷贝到</span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: Verdana">tomcat </span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: 宋体">下的</span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: Verdana">/shared/lib </span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: 宋体">目录或</span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: Verdana">WEB </span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: 宋体">应用的</span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: Verdana">WEB-INF/lib</span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: 宋体">下</span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: Verdana">,</span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: 宋体">所依赖的</span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: Verdana">Jar</span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: 宋体">在</span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: Verdana">jboss </span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: 宋体">安装目录的</span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: Verdana">client</span></strong><strong><span style="font-size: 9.5pt; color: red; font-family: 宋体">目录下</span></strong><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">。你可以在</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">eclipse</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">里设置一个自定义的</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">library &#8220;ejb3 library&#8221;</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">，把这些</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">jars</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">都添加到该</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">library</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">里，然后在你的</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">EJB project</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">里把</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">&#8220;ejb3 library&#8221; add to classpath</span></p>
<p style="text-indent: -42.75pt; text-align: left" align="left"><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">B)</span><span style="font-size: 7pt; color: #333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">把</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">EJB </span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">接口拷贝到应用的</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">/WEB-INF/classes/</span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">目录下</span></p>
<p style="text-indent: -42.75pt; text-align: left" align="left"><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">C)</span><span style="font-size: 7pt; color: #333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">客户端访问</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">EJB </span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">时必须明确设置</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">InitialContext </span><span style="font-size: 9.5pt; color: #333333; font-family: 宋体">环境属性，代码如下</span><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">:</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: Verdana">Properties props = </span><span style="font-size: 9pt; color: #800054; font-family: Verdana">new </span><span style="font-size: 9pt; color: black; font-family: Verdana">Properties();</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: Verdana">props.setProperty(</span><span style="font-size: 9pt; color: #2900ff; font-family: Verdana">"java.naming.factory.initial"</span><span style="font-size: 9pt; color: black; font-family: Verdana">, </span><span style="font-size: 9pt; color: #2900ff; font-family: Verdana">"org.jnp.interfaces.NamingContextFactory"</span><span style="font-size: 9pt; color: black; font-family: Verdana">);</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: Verdana">props.setProperty(</span><span style="font-size: 9pt; color: #2900ff; font-family: Verdana">"java.naming.provider.url"</span><span style="font-size: 9pt; color: black; font-family: Verdana">, </span><span style="font-size: 9pt; color: #2900ff; font-family: Verdana">"localhost:1099"</span><span style="font-size: 9pt; color: black; font-family: Verdana">);</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: Verdana">props.setProperty(</span><span style="font-size: 9pt; color: #2900ff; font-family: Verdana">"java.naming.factory.url.pkgs"</span><span style="font-size: 9pt; color: black; font-family: Verdana">, </span><span style="font-size: 9pt; color: #2900ff; font-family: Verdana">"org.jboss.naming"</span><span style="font-size: 9pt; color: black; font-family: Verdana">);</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: Verdana">InitialContext ctx = </span><span style="font-size: 9pt; color: #800054; font-family: Verdana">new </span><span style="font-size: 9pt; color: black; font-family: Verdana">InitialContext(props);</span><span style="font-size: 9pt; color: #339a66; font-family: Verdana">//</span><span style="font-size: 9pt; color: #339a66; font-family: 宋体">客户端和</span><span style="font-size: 9pt; color: #339a66; font-family: Verdana">jboss</span><span style="font-size: 9pt; color: #339a66; font-family: 宋体">运行在同一个</span><span style="font-size: 9pt; color: #339a66; font-family: Verdana">jvm,</span><span style="font-size: 9pt; color: #339a66; font-family: 宋体">不需要传入</span><span style="font-size: 9pt; color: #339a66; font-family: Verdana">props</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: Verdana">HelloWorld helloworld = (HelloWorld) ctx.lookup(</span><span style="font-size: 9pt; color: #2900ff; font-family: Verdana">"HelloWorldBean/remote"</span><span style="font-size: 9pt; color: black; font-family: Verdana">);</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9.5pt; color: #333333; font-family: Verdana">Tip: </span><span style="color: red; font-family: 宋体">除了上面通过硬编码设置环境属性的方式外，还可以在应用的</span><span style="color: red; font-family: Verdana">classpath </span><span style="color: red; font-family: 宋体">下放置一个</span><span style="color: red; font-family: Verdana">jndi.properties </span><span style="color: red; font-family: 宋体">文件</span></p>
<p style="text-align: left" align="left"><strong><span style="color: red; font-family: 宋体">注意：在单独的</span></strong><strong><span style="color: red; font-family: Verdana">tomcat</span></strong><strong><span style="color: red; font-family: 宋体">和</span></strong><strong><span style="color: red; font-family: Verdana">J2SE</span></strong><strong><span style="color: red; font-family: 宋体">里不能调用</span></strong><strong><span style="color: red; font-family: Verdana">EJB </span></strong><strong><span style="color: red; font-family: 宋体">的</span></strong><strong><span style="color: red; font-family: Verdana">Local </span></strong><strong><span style="color: red; font-family: 宋体">接口，因为他与</span></strong><strong><span style="color: red; font-family: Verdana">JBOSS </span></strong><strong><span style="color: red; font-family: 宋体">不在同一个</span></strong><strong><span style="color: red; font-family: Verdana">VM </span></strong><strong><span style="color: red; font-family: 宋体">中。</span></strong><strong><span style="color: red; font-family: Verdana">J2se</span></strong><strong><span style="color: red; font-family: 宋体">中调用</span></strong><strong><span style="color: red; font-family: Verdana">EJB3 </span></strong><strong><span style="color: red; font-family: 宋体">同样需要把上述</span></strong><strong><span style="color: red; font-family: Verdana">jar </span></strong><strong><span style="color: red; font-family: 宋体">及</span></strong><strong><span style="color: red; font-family: Verdana">EJB </span></strong><strong><span style="color: red; font-family: 宋体">接口放置在应用的类路径下。</span></strong><strong><span style="color: red; font-family: Verdana">(</span></strong><strong><span style="color: red; font-family: 宋体">如果是</span></strong><strong><span style="color: red; font-family: Verdana">JBoss</span></strong><strong><span style="color: red; font-family: 宋体">，则需要把</span></strong><strong><span style="color: red; font-family: Verdana">JBoss_HOME/client</span></strong><strong><span style="color: red; font-family: 宋体">下的</span></strong><strong><span style="color: red; font-family: Verdana"> jbossall-client.jar </span></strong><strong><span style="color: red; font-family: 宋体">和</span></strong><strong><span style="color: red; font-family: Verdana">jnp_client.jar</span></strong><strong><span style="color: red; font-family: 宋体">引入到你的工程里</span></strong><strong><span style="color: red; font-family: Verdana">)</span></strong></p>
</h4>
<div>
<div>&nbsp;</div>
</div>
<img src ="http://www.blogjava.net/zhaochengming/aggbug/205342.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaochengming/" target="_blank">helloworld2008</a> 2008-06-02 15:18 <a href="http://www.blogjava.net/zhaochengming/archive/2008/06/02/205342.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>