﻿<?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-大鸟的学习乐园-文章分类-WEB</title><link>http://www.blogjava.net/dunkbird/category/30988.html</link><description>路漫漫其修远兮，吾将上下而求索</description><language>zh-cn</language><lastBuildDate>Fri, 25 Dec 2009 21:14:04 GMT</lastBuildDate><pubDate>Fri, 25 Dec 2009 21:14:04 GMT</pubDate><ttl>60</ttl><item><title>GlassFish 安装指南</title><link>http://www.blogjava.net/dunkbird/articles/306977.html</link><dc:creator>大鸟</dc:creator><author>大鸟</author><pubDate>Wed, 23 Dec 2009 02:03:00 GMT</pubDate><guid>http://www.blogjava.net/dunkbird/articles/306977.html</guid><wfw:comment>http://www.blogjava.net/dunkbird/comments/306977.html</wfw:comment><comments>http://www.blogjava.net/dunkbird/articles/306977.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dunkbird/comments/commentRss/306977.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dunkbird/services/trackbacks/306977.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">一、安装配置<br />
&nbsp;&nbsp;&nbsp; 1) </span><span style="font-family: 宋体">下载<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 宋体">从官网<a href="https://glassfish.dev.java.net/public/downloadsindex.html" target="_blank">https://glassfish.dev.java.net/public/downloadsindex.html</a></span><span style="font-family: 宋体">下载GlassFish</span><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp; </span></p>
<p><br />
&nbsp;&nbsp;&nbsp; 2) <span style="font-family: 宋体">安装<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span><span style="font-family: 宋体">在安装前确保jdk</span><span style="font-family: 宋体">已安装，且已设置JAVA_HOME</span><span style="font-family: 宋体">属性。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. copy <span style="font-family: 宋体">下载的jar</span><span style="font-family: 宋体">文件到要安装的目录，如c:"Server<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 2. </span><span style="font-family: 宋体">执行java -Xmx256m -jar filename.jar</span><span style="font-family: 宋体">，中间会弹出关于使用许可的确认窗口。<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;3. </span><span style="font-family: 宋体">完成后，在c:"Server</span><span style="font-family: 宋体">目录下会生成glassfish</span><span style="font-family: 宋体">目录。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3. </span><span style="font-family: 宋体">进入c:"Server"glassfish, </span><span style="font-family: 宋体">执行ant</span><span style="font-family: 宋体">：ant -f setup.xml</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">安装过程结束。</span></p>
<p><br />
&nbsp;&nbsp;&nbsp; 3) <span style="font-family: 宋体">配置<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">将c:"Server"glassfish"bin</span><span style="font-family: 宋体">加入到path</span><span style="font-family: 宋体">环境变量中，以后就可以在命令行中直接使用asadmin</span><span style="font-family: 宋体">，而不用进入到c:"Server"glassfish"bin</span><span style="font-family: 宋体">目录了。<br />
<br />
&nbsp;&nbsp;&nbsp; 4) </span><span style="font-family: 宋体">运行<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span><span style="font-family: 宋体">方法1</span><span style="font-family: 宋体">：进入到glassfish"bin"</span><span style="font-family: 宋体">目录下，双击asadmin.bat</span><span style="font-family: 宋体">，在命令行中输入start-domain domain1</span><span style="font-family: 宋体">。<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span><span style="font-family: 宋体">方法2</span><span style="font-family: 宋体">：通过cmd </span><span style="font-family: 宋体">进入命令行，进入glassfish"bin</span><span style="font-family: 宋体">目录，执行asadmin start-domain domain1</span><span style="font-family: 宋体">，如果已按上步将glassfish"bin</span><span style="font-family: 宋体">加入到了path</span><span style="font-family: 宋体">环境变量，则无需进入glassfish"bin</span><span style="font-family: 宋体">目录。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">执行完以上步骤后，即可通过浏览器访问</span>http://localhost:8080/<span style="font-family: 宋体">确保GlassFish</span><span style="font-family: 宋体">已正常运行，或者通过http://localhost:4848/</span><span style="font-family: 宋体">访问glassfish</span><span style="font-family: 宋体">的管理控制台。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">若要停止GlassFish</span><span style="font-family: 宋体">，可通过命令：asadmin stop-domain domain1</span><span style="font-family: 宋体">。<br />
<br />
</span><span style="font-family: 宋体">二、Eclipse</span><span style="font-family: 宋体">的GlassFish</span><span style="font-family: 宋体">插件<br />
&nbsp;&nbsp;&nbsp; Eclipse</span><span style="font-family: 宋体">的glassfish</span><span style="font-family: 宋体">插件的安装可参考官方文档：<a href="https://glassfishplugins.dev.java.net/eclipse34/index.html" target="_blank">https://glassfishplugins.dev.java.net/eclipse34/index.html</a>。</span></p>
<img src ="http://www.blogjava.net/dunkbird/aggbug/306977.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dunkbird/" target="_blank">大鸟</a> 2009-12-23 10:03 <a href="http://www.blogjava.net/dunkbird/articles/306977.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MyEclipse jboss EJB 入门 一</title><link>http://www.blogjava.net/dunkbird/articles/295056.html</link><dc:creator>大鸟</dc:creator><author>大鸟</author><pubDate>Mon, 14 Sep 2009 11:41:00 GMT</pubDate><guid>http://www.blogjava.net/dunkbird/articles/295056.html</guid><wfw:comment>http://www.blogjava.net/dunkbird/comments/295056.html</wfw:comment><comments>http://www.blogjava.net/dunkbird/articles/295056.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dunkbird/comments/commentRss/295056.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dunkbird/services/trackbacks/295056.html</trackback:ping><description><![CDATA[利用JBOSS+MyEclipse完成一个简单的EJB示例<br />
<br />
目标：<br />
1、编写一个简单的无状态会话Bean，传入一个字符串参数，返回字符串Hello +<br />
字符串参数。<br />
2、通过JSP页面上输入一个字符串，提交到Servlet，并调用EJB，最后在一个页面上输出处<br />
理后的字符串。<br />
工具：<br />
JBOSS 4.2GA + Eclipse 3.2.2 +MyEclipse 5.5GA + JDK 1.6<br />
<br />
首先需要搭建好各种环境，这一步比较简单，就不再赘述。唯一需要注意的是在启动JBOSS<br />
服务器时可能会出现一些问题。如端口号被占用而导致服务器无法启动。如果出现这个问题<br />
可以在%JBOSS%/server/default/deploy/jboss-web.deployer/目录下找到server.xml文件<br />
，修改&lt;Connector port="8080" address="${jboss.bind.address}" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxThreads="250" maxHttpHeaderSize="8192"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; emptySessionPath="true" protocol="HTTP/1.1"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enableLookups="false" redirectPort="8443" acceptCount="100"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionTimeout="20000" disableUploadTimeout="true" /&gt;<br />
中的port属性，然后再重新启动服务器。默认端口是8080。<br />
<br />
JBOSS自带了TOMCAT<br />
5.X，当然也可以使用另外的Web服务器，不过后面的程序会稍微有些改动。<br />
环境搭建完成后就需要编写EJB代码。一个EJB至少需要3个类，即Home接口、远程接口、实<br />
现类。新建一个EJB Project，项目名为：MyFirstEJB.<br />
-----------------------------------------------------------------------------------------<br />
1、创建Home接口---HelloHome.java<br />
package com;<br />
<br />
public interface HelloHome extends javax.ejb.EJBHome {<br />
&nbsp;&nbsp;&nbsp; public Hello create() throws javax.ejb.CreateException,<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; java.rmi.RemoteException;<br />
}<br />
-----------------------------------------------------------------------------------------<br />
2、创建远程接口---Hello.java<br />
package com;<br />
<br />
public interface Hello extends javax.ejb.EJBObject {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String sayHello(String message) throws java.rmi.RemoteException;<br />
<br />
}<br />
-----------------------------------------------------------------------------------------<br />
3、创建实现类---HelloBean.java<br />
package com;<br />
<br />
import java.rmi.RemoteException;<br />
<br />
import javax.ejb.CreateException;<br />
import javax.ejb.EJBException;<br />
import javax.ejb.SessionBean;<br />
import javax.ejb.SessionContext;<br />
<br />
public class HelloBean implements SessionBean {<br />
<br />
&nbsp;&nbsp;&nbsp; private SessionContext context;<br />
<br />
&nbsp;&nbsp;&nbsp; public HelloBean() {<br />
<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; public String sayHello(String message) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (message == null)<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; message = "";<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; message = "i am xiongxiong.Hello " + message + "!";<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return message;<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; public void ejbActivate() throws EJBException, RemoteException {<br />
&nbsp;&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; public void ejbPassivate() throws EJBException, RemoteException {<br />
<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; public void ejbRemove() throws EJBException, RemoteException {<br />
<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; public void setSessionContext(SessionContext newContext)<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; throws EJBException {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; context = newContext;<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; public void ejbCreate() throws CreateException {<br />
<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; public void replaceWithRealBusinessMethod() throws EJBException {<br />
<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
}<br />
<br />
-----------------------------------------------------------------------------------------<br />
其中方法sayHello就是我们需要实现的业务。<br />
类建好之后，接下来就需要配置相关的xml文件。在该项目下的META-INF里新建两个xml文件<br />
ejb-jar.xml和jboss.xml。具体配置如下：<br />
-----------------------------------------------------------------------------------------<br />
ejb-jar.xml<br />
<br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd"&gt;<br />
&lt;ejb-jar&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;![CDATA[No Description.]]&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;display-name&gt;Generated by XDoclet&lt;/display-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;enterprise-beans&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;session&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;![CDATA[Description for Hello]]&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;display-name&gt;Name for Hello&lt;/display-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ejb-name&gt;Hello&lt;/ejb-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;home&gt;com.HelloHome&lt;/home&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;remote&gt;com.Hello&lt;/remote&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ejb-class&gt;com.HelloBean&lt;/ejb-class&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;session-type&gt;Stateless&lt;/session-type&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;transaction-type&gt;Container&lt;/transaction-type&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/session&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/enterprise-beans&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;assembly-descriptor&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/assembly-descriptor&gt;<br />
&lt;/ejb-jar&gt;<br />
<br />
-----------------------------------------------------------------------------------------<br />
jboss.xml<br />
<br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 2.4//EN" "http://www.jboss.org/j2ee/dtd/jboss_2_4.dtd"&gt;<br />
&lt;jboss&gt;<br />
&nbsp;&nbsp; &lt;enterprise-beans&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;session&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ejb-name&gt;Hello&lt;/ejb-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;jndi-name&gt;ejb/Hello&lt;/jndi-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/session&gt;<br />
&nbsp;&nbsp; &lt;/enterprise-beans&gt;<br />
&nbsp;&nbsp; &lt;resource-managers&gt;<br />
&nbsp;&nbsp; &lt;/resource-managers&gt;<br />
&lt;/jboss&gt;<br />
-----------------------------------------------------------------------------------------<br />
使用XDoclet来自动生成这些文件还是很方便的，只是同时会生成一些多余的类和代码，需<br />
要手动去删除他们。<br />
<br />
到这里一个简单的无状态会话Bean就完成了，下面就是将他们部署到Jboss下面。可以将项<br />
目打包成jar文件，然后放在<br />
%JBOSS%/server/default/deploy/目录下，这样就算部署完成。还可以使用MyEclipse来帮<br />
你进行部署。如果控制台上出现：<br />
01:59:48,640 INFO [EjbModule] Deploying Hello<br />
01:59:48,703 INFO [ProxyFactory] Bound EJB Home 'Hello' to jndi 'ejb/Hello'<br />
01:59:48,703 INFO [EJBDeployer] Deployed:<br />
file:/%jboss%/server/default/deploy/MyFirstEJB.jar/<br />
就表示部署成功。下面我们就可以编写客户端程序来调用该EJB。<br />
<br />
新建一个Web项目，项目名为testEJB，里面包含两个jsp文件和一个servlet。<br />
-----------------------------------------------------------------------------------------<br />
EJBServlet.java<br />
<br />
package com;<br />
<br />
import java.io.IOException;<br />
<br />
import javax.ejb.CreateException;<br />
import javax.naming.InitialContext;<br />
import javax.naming.NamingException;<br />
import javax.servlet.ServletException;<br />
import javax.servlet.http.HttpServlet;<br />
import javax.servlet.http.HttpServletRequest;<br />
import javax.servlet.http.HttpServletResponse;<br />
<br />
public class EJBServlet extends HttpServlet {<br />
<br />
&nbsp;&nbsp;&nbsp; public void doGet(HttpServletRequest request, HttpServletResponse response)<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; throws ServletException, IOException {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; doPost(request, response);<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; public void doPost(HttpServletRequest request, HttpServletResponse response)<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; throws ServletException, IOException {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; request.setCharacterEncoding("gb2312");<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; String info = request.getParameter("info");<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; InitialContext context = null;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Hello hello = null;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; context = new InitialContext();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; HelloHome home = (HelloHome) context.lookup("ejb/Hello");<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; hello = home.create();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } catch (NamingException e) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } catch (CreateException e) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; info = hello.sayHello(info);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; request.setAttribute("info", info);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; request.getRequestDispatcher("message.jsp").forward(request, response);<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
}<br />
-----------------------------------------------------------------------------------------<br />
从jsp页面上获得表单中的字符串，然后将这个字符串传递到EJB的会话Bean中进行处理。最<br />
后将返回的字符串显示在另外一个JSP页面上。<br />
-----------------------------------------------------------------------------------------<br />
index.jsp<br />
<br />
&lt;%@ page language="java" isELIgnored="false" pageEncoding="gb2312"%&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;title&gt;EJB&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;form action="servlet" method="post"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="text" name="info" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="submit" value="提交"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/form&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
-----------------------------------------------------------------------------------------<br />
message.jsp<br />
<br />
&lt;%@ page language="java" isELIgnored="false" pageEncoding="utf-8"%&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;title&gt;message&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;h1&gt;${info }&lt;/h1&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
-----------------------------------------------------------------------------------------<br />
web.xml<br />
<br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;web-app version="2.4" <br />
&nbsp;&nbsp;&nbsp; xmlns="http://java.sun.com/xml/ns/j2ee" <br />
&nbsp;&nbsp;&nbsp; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <br />
&nbsp;&nbsp;&nbsp; xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee <br />
&nbsp;&nbsp;&nbsp; http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&gt;<br />
&lt;servlet&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;description&gt;This is the description of my J2EE component&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;display-name&gt;This is the display name of my J2EE component&lt;/display-name&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;EJBServlet&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;com.EJBServlet&lt;/servlet-class&gt;<br />
&lt;/servlet&gt;<br />
<br />
&lt;servlet-mapping&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;EJBServlet&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/servlet&lt;/url-pattern&gt;<br />
&lt;/servlet-mapping&gt;<br />
<br />
&lt;/web-app&gt;<br />
-----------------------------------------------------------------------------------------<br />
<br />
<br />
如果Web项目和EJB项目在同一服务器中，那么象上面的程序运行是没什么问题的。<br />
<br />
<br />
如果Web项目和EJB项目不在同一台服务器中，或者同一台服务器中使用的不是JBOSS自带的T<br />
omcat，那么创建<br />
ClientTestEJB.java<br />
-----------------------------------------------------------------------------------------<br />
<br />
package com;<br />
<br />
import java.rmi.RemoteException;<br />
import java.util.Hashtable;<br />
<br />
import javax.ejb.CreateException;<br />
import javax.naming.Context;<br />
import javax.naming.InitialContext;<br />
import javax.naming.NamingException;<br />
import javax.servlet.http.HttpServlet;<br />
<br />
public class ClientTestEJB extends HttpServlet {<br />
<br />
&nbsp;&nbsp;&nbsp; public static void main(String[] args) {<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; String info = "";<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; InitialContext context = null;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Hello hello = null;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /** *******************添加的代码**************************** */<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Hashtable environment = new Hashtable();<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; environment.put(Context.INITIAL_CONTEXT_FACTORY,<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; "org.jnp.interfaces.NamingContextFactory");<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; environment.put(Context.URL_PKG_PREFIXES,<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; "org.jboss.naming:org.jnp.interfaces");<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; environment.put(Context.PROVIDER_URL, "jnp://localhost:1099");<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /** ******************************************************** */<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; context = new InitialContext(environment);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; HelloHome home = (HelloHome) context.lookup("ejb/Hello");<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; hello = home.create();<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; info = hello.sayHello(info);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } catch (RemoteException e) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } catch (NamingException e) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } catch (CreateException e) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println(info);<br />
<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
}<br />
-----------------------------------------------------------------------------------------<br />
还需要将%jboss%/client/jbossall-client.jar<br />
和EJB项目的jar包拷贝到web 项目中WEB-INF\lib目录或者CLASSPATH下。<br />
<br />
如果不是jsp或servlet调用EJB不会出现下面错误<br />
补充：在jsp或servlet中调用EJB时出现下面错误时：<br />
04:03:33,714 INFO [STDOUT] java.rmi.ServerException: EJBException:; nested<br />
exception is:<br />
javax.ejb.EJBException: Invalid invocation, check your deployment packaging,<br />
method=public abstract test.ejb.TestEJBInterface test.ejb.TestEJBHome.create()<br />
throws javax.ejb.CreateException,java.rmi.RemoteException<br />
解决办法有三种：<br />
1、编辑%jboss%/server/default/conf/jboss-service.xml<br />
<br />
&lt;mbean code="org.jboss.naming.NamingService"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name="jboss:service=Naming"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmbean-dd="resource:xmdesc/NamingService-xmbean.xml"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- The call by value mode. true if all lookups are unmarshalled using<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the caller's TCL, false if in VM lookups return the value by reference.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;attribute name="CallByValue"&gt;false&lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />
&lt;/mbean&gt;<br />
将属性CallByValue的值改为true<br />
<br />
2、编辑%jboss%/server/default/deploy/ear-deployer.xml<br />
<br />
&lt;mbean code="org.jboss.deployment.EARDeployer"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name="jboss.j2ee:service=EARDeployer"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;attribute name="Isolated"&gt;false&lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;attribute name="CallByValue"&gt;false&lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;attribute name="EnablelibDirectoryByDefault"&gt;true&lt;/attribute&gt;<br />
&nbsp;&nbsp; &lt;/mbean&gt;<br />
将属性Isolated和CallByValue的值改为true<br />
<br />
3、编辑%jboss%/server/default/deploy/jboss-web.deployer/META-INF/jboss-service.x<br />
ml<br />
<br />
&lt;attribute name="Java2ClassLoadingCompliance"&gt;false&lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;attribute name="UseJBossWebLoader"&gt;false&lt;/attribute&gt;<br />
将属性Java2ClassLoadingCompliance和UseJBossWebLoader的值改为false，这里默认值一<br />
般都是false<br />
<br />
一般情况下，使用第二种方式就可以解决该问题。
<img src ="http://www.blogjava.net/dunkbird/aggbug/295056.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dunkbird/" target="_blank">大鸟</a> 2009-09-14 19:41 <a href="http://www.blogjava.net/dunkbird/articles/295056.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【JBoss学习】Eclipse＋JBoss学习入门</title><link>http://www.blogjava.net/dunkbird/articles/204110.html</link><dc:creator>大鸟</dc:creator><author>大鸟</author><pubDate>Fri, 30 May 2008 07:52:00 GMT</pubDate><guid>http://www.blogjava.net/dunkbird/articles/204110.html</guid><wfw:comment>http://www.blogjava.net/dunkbird/comments/204110.html</wfw:comment><comments>http://www.blogjava.net/dunkbird/articles/204110.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dunkbird/comments/commentRss/204110.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dunkbird/services/trackbacks/204110.html</trackback:ping><description><![CDATA[<p align="justify">&nbsp;</p>
<p><font size="2">刚刚开始学习JBoss，学习了一个入门级的小例子，对于刚接触JBoss和Eclipse的菜鸟来说很有帮助的，现在把我的试验过程介绍一下。<br />
首先，打开Eclipse，新建——其它——JBoss IDE——J2EE Projects——J2EE 1.4 Projects<br />
下一步<br />
填入项目名称：HelloWorld<br />
项目内容可以选择使用缺省值或者自己制定存储空间<br />
下一步<br />
在源选单下，添加文件夹，分别命名为j2src（存放java文件）和src（存放部署文件），缺省输出文件夹改为：HelloWorld/bin<br />
完成</font></p>
<p><font size="2">在包资源管理器中，右键单击j2src，选择新建——包，输入包名：sample.server。</font></p>
<p><font size="2">右键单击sample.server，选择新建——接口，输入接口名字：HelloWorld，此为远程接口，是指对于客户端而言所能看到的调用接口，该接口内容为：</font></p>
<p><font size="2">/**<br />
&nbsp;*HelloWorld.java<br />
&nbsp;*/<br />
package sample.server;</font></p>
<p><font size="2">import javax.ejb.EJBObject;</font></p>
<p><font size="2">/**<br />
&nbsp;* @author Administrator<br />
&nbsp;*<br />
&nbsp;* TODO 要更改此生成的类型注释的模板，请转至<br />
&nbsp;* 窗口 － 首选项 － Java － 代码样式 － 代码模板<br />
&nbsp;*/<br />
public interface HelloWorld extends EJBObject {<br />
&nbsp;public String hello() throws java.rmi.RemoteException;<br />
}</font></p>
<p><font size="2">同样的，新建Home接口HelloWorldHome，我们可以把Home接口看做是一个制造EJB的工厂，它告诉EJB容器：&#8220;我的客户要我生成一个EJB，现在我把这个任务交给你啦！&#8221;<br />
/**<br />
&nbsp;* HelloWorldHome.java<br />
&nbsp;*/<br />
package sample.server;<br />
import javax.ejb.EJBHome;<br />
/**<br />
&nbsp;* @author Administrator<br />
&nbsp;*<br />
&nbsp;* TODO 要更改此生成的类型注释的模板，请转至<br />
&nbsp;* 窗口 － 首选项 － Java － 代码样式 － 代码模板<br />
&nbsp;*/<br />
public interface HelloWorldHome extends EJBHome {<br />
&nbsp;HelloWorld create() throws java.rmi.RemoteException,<br />
&nbsp;&nbsp;&nbsp;javax.ejb.CreateException;<br />
}<br />
下面就是EJB的实现，右键单击sample.server，新建——其它——JBoss IDE——EJB Components——Session Bean，输入名称：HelloWorldBean，类型为Stateless，Remote，选择创建来自超类的构造函数，继承的抽象方法，ejbCreate() method。完成。</font></p>
<p><font size="2">/**<br />
&nbsp;* HelloWorldBean.java<br />
&nbsp;*/</font></p>
<p><font size="2">package sample.server;</font></p>
<p><font size="2">import java.rmi.RemoteException;</font></p>
<p><font size="2">import javax.ejb.EJBException;<br />
import javax.ejb.SessionBean;<br />
import javax.ejb.SessionContext;</font></p>
<p><font size="2">import javax.ejb.CreateException;</font></p>
<p><font size="2">/**<br />
&nbsp;* @ejb.bean name="HelloWorld"<br />
&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; display-name="Name for HelloWorld"<br />
&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; description="Description for HelloWorld"<br />
&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jndi-name="ejb/HelloWorld"<br />
&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="Stateless"<br />
&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; view-type="remote"<br />
&nbsp;*/<br />
public class HelloWorldBean implements SessionBean {</font></p>
<p><font size="2">&nbsp;/**<br />
&nbsp; * <br />
&nbsp; */<br />
&nbsp;public HelloWorldBean() {<br />
&nbsp;&nbsp;super();<br />
&nbsp;&nbsp;// TODO 自动生成构造函数存根<br />
&nbsp;}</font></p>
<p><font size="2">&nbsp;/* （非 Javadoc）<br />
&nbsp; * @see javax.ejb.SessionBean#setSessionContext(javax.ejb.SessionContext)<br />
&nbsp; */<br />
&nbsp;public void setSessionContext(SessionContext ctx)<br />
&nbsp;&nbsp;throws EJBException,<br />
&nbsp;&nbsp;RemoteException {<br />
&nbsp;&nbsp;// TODO 自动生成方法存根</font></p>
<p><font size="2">&nbsp;}</font></p>
<p><font size="2">&nbsp;/* （非 Javadoc）<br />
&nbsp; * @see javax.ejb.SessionBean#ejbRemove()<br />
&nbsp; */<br />
&nbsp;public void ejbRemove() throws EJBException, RemoteException {<br />
&nbsp;&nbsp;// TODO 自动生成方法存根</font></p>
<p><font size="2">&nbsp;}</font></p>
<p><font size="2">&nbsp;/* （非 Javadoc）<br />
&nbsp; * @see javax.ejb.SessionBean#ejbActivate()<br />
&nbsp; */<br />
&nbsp;public void ejbActivate() throws EJBException, RemoteException {<br />
&nbsp;&nbsp;// TODO 自动生成方法存根</font></p>
<p><font size="2">&nbsp;}</font></p>
<p><font size="2">&nbsp;/* （非 Javadoc）<br />
&nbsp; * @see javax.ejb.SessionBean#ejbPassivate()<br />
&nbsp; */<br />
&nbsp;public void ejbPassivate() throws EJBException, RemoteException {<br />
&nbsp;&nbsp;// TODO 自动生成方法存根</font></p>
<p><font size="2">&nbsp;}</font></p>
<p><font size="2">&nbsp;/**<br />
&nbsp; * Default create method<br />
&nbsp; * <br />
&nbsp; * @throws CreateException<br />
&nbsp; * @ejb.create-method<br />
&nbsp; */<br />
&nbsp;public void ejbCreate() throws CreateException {<br />
&nbsp;&nbsp;// TODO Auto-generated method stub<br />
&nbsp;}<br />
&nbsp;public String hello()<br />
&nbsp;{<br />
&nbsp;&nbsp;System.out.println("hello()");<br />
&nbsp;&nbsp;return "Hello,world";<br />
&nbsp;}<br />
}<br />
服务器端程序编好，下一步就要做部署工作了。</font></p>
<p><font size="2">右键选择src，新建目录META-INF，在该目录下，新建——其它——JBoss-IDE——Descriptors——EJB 2.1 Deployment Descriptor，默认名字为ejb-jar.xml，完成。<br />
ejb-jar.xml：</font></p>
<p><font size="2">《?xml version="1.0" encoding="UTF-8"?》<br />
《ejb-jar version="2.1"<br />
&nbsp;xmlns="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a>"<br />
&nbsp;xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"<br />
&nbsp;xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a><br />
&nbsp;<a href="http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd</a>"》<br />
《ejb-jar》<br />
《enterprise-beans》<br />
&nbsp;&nbsp;《session》<br />
&nbsp;&nbsp;&nbsp;《ejb-name》HelloWorldBean《/ejb-name》<br />
&nbsp;&nbsp;&nbsp;《home》sample.server.HelloWorldHome《/home》<br />
&nbsp;&nbsp;&nbsp;《remote》sample.server.HelloWorld《/remote》<br />
&nbsp;&nbsp;&nbsp;《ejb-class》sample.server.HelloWorldBean《/ejb-class》<br />
&nbsp;&nbsp;&nbsp;《session-type》Stateful《/session-type》<br />
&nbsp;&nbsp;&nbsp;《transaction-type》Bean《/transaction-type》<br />
&nbsp;&nbsp;《/session》<br />
&nbsp;《/enterprise-beans》<br />
《/ejb-jar》</font></p>
<p><font size="2">（备注：在此，由于网页显示的原因，将&lt;&gt;符号改成了《》，所以，在实际应用中应改为&lt;&gt;，以正常工作。同时，ejb-jar.xml开头的版本标记文字会因jboss版本不同而不同，希望大家注意）<!--l version="1.0" encoding="UTF-8--></font></p>
<p><font size="2">这样我们就完成了一个简单的会话EJB的编写，下一步是打包。<br />
同时选择j2src和src两个目录，右键单击选择导出——jar——选择导出目标，可以放在定义的HelloWorld目录下，起个名字叫HelloWorld.jar，则会在包资源管理器中看到一个文件HelloWorld.jar。</font></p>
<p><font size="2">光有EJB，没有客户端，对我们来说毫无用处，所以下一步我们就要编写客户端程序。<br />
同样的，在j2src下创建包sample.client。<br />
在该包下新建类，类名为HelloWorldClient，添加接口：sample.server.HelloWorld，<br />
/**<br />
&nbsp;* HelloWorldClient.java<br />
&nbsp;*/</font></p>
<p><font size="2">sample.server.HelloWorldHome。</font></p>
<p><font size="2">package sample.client;</font></p>
<p><font size="2">import java.util.Hashtable;</font></p>
<p><font size="2">import javax.naming.Context;<br />
import javax.naming.InitialContext;</font></p>
<p><font size="2">import sample.server.HelloWorld;<br />
import sample.server.HelloWorldHome;</font></p>
<p><font size="2">/**<br />
&nbsp;* @author Administrator<br />
&nbsp;*<br />
&nbsp;* TODO 要更改此生成的类型注释的模板，请转至<br />
&nbsp;* 窗口 － 首选项 － Java － 代码样式 － 代码模板<br />
&nbsp;*/<br />
public class HelloWorldClient{<br />
&nbsp;public static void main(String [] args){<br />
&nbsp;&nbsp;Hashtable env = new Hashtable();<br />
&nbsp;&nbsp;env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");<br />
&nbsp;&nbsp;env.put(Context.PROVIDER_URL,"localhost:1099");<br />
/**<br />
&nbsp;* 默认是把服务器端EJB部署在本机上，如果部署在其它机器上，比如192.168.0.1，则将localhost&nbsp; * 改为192.168.0.1即可<br />
&nbsp;*/<br />
&nbsp;&nbsp;env.put("Java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");<br />
&nbsp;&nbsp;try{<br />
&nbsp;&nbsp;&nbsp;Context ctx = new InitialContext(env);<br />
&nbsp;&nbsp;&nbsp;Object obj = ctx.lookup("HelloWorldBean");<br />
&nbsp;&nbsp;&nbsp;HelloWorldHome home =(HelloWorldHome)javax.rmi.PortableRemoteObject.narrow(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj, HelloWorldHome.class );<br />
&nbsp;&nbsp;&nbsp;HelloWorld helloWorld = home.create();<br />
&nbsp;&nbsp;&nbsp;System.out.println(helloWorld.hello());<br />
&nbsp;&nbsp;&nbsp;helloWorld.remove();<br />
&nbsp;&nbsp;}catch(Exception e){<br />
&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;System.out.println("Exception:"+e.getMessage());<br />
&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />
&nbsp;}<br />
}</font></p>
<p><font size="2">下面就可以编译运行了。<br />
手动启动JBoss，直接运行JBoss\bin\目录下的run.bat即可，这个过程时间长短跟计算机的配置有关，配置高的计算机几秒钟就可以了，比较传统的计算机则需要等上1分多钟甚至更长，不过你不需要专门等着它的运行，你双击run.bat后，不用管它，你可以先做一些其他的事情，比如给mm发条短信啊什么的，等你发完短信后，你会发现JBoss已经运行成功，并会告诉你启动JBoss花了多长时间：Started in 1m:36s:870ms，呵呵，我的机器比较传统哈。<br />
选择包资源管理器中的HelloWorld.jar，右键单击选择Deployment——Deploy to，<br />
选择jboss 4.0(default)[file:/D:/jboss4/server/default/deploy/]<br />
则系统会自动把HelloWorld.jar文件拷贝到jboss的/server/default/deploy/目录下，jboss的运行窗口将出现<br />
10:09:50,679 INFO&nbsp; [EjbModule] Deploying HelloWorldBean<br />
10:09:52,051 INFO&nbsp; [org.jboss.ejb.EJBDeployer] Deployed: file:/D:/jboss4/server/default/deploy/HelloWorld.jar<br />
服务器端运行成功<br />
右键选择HelloWorldClient.java，选择运行——运行，在左边选择java应用程序下的HelloWorldClient，右边选择类路径，在引导程序条目下添加外部JAR，分别jboss的client目录下的jboss-j2ee.jar、log4j.jar、jboss-client.jar。然后单击运行，就会看到底下控制台上显示的&#8220;Hello，World&#8221;，哈哈，成功了，这可跟一般的&#8220;HelloWorld&#8221;不太一样哦。</font></p>
<img src ="http://www.blogjava.net/dunkbird/aggbug/204110.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dunkbird/" target="_blank">大鸟</a> 2008-05-30 15:52 <a href="http://www.blogjava.net/dunkbird/articles/204110.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>