Topquan's Blog

          分享價值----成就你我----我的博客----你的家

          JBOSS熱身:Windows環境下的JBOSS開發

          最近要做一個在jboss下的項目,jboss版本為jboss-4.0.5.GA。
          因為以前沒有使用過jboss,為了更好的了解它,就從網上找了一個小例子,很經典的HelloWorld.
           
          一、安裝所需軟件
          1、 安裝 SDK 到 D:\Program Files\Java\jdk1.5.0_07;方法為:雙擊執行下載的 jdk文件,選擇安裝目錄為 D:\Program Files\Java\jdk1.5.0_07,其它默認即可。
          2、 安裝 JBOSS ;方法為:將下載的 jboss-4.0.5.GA.zip文件解壓到任意一個目錄,解壓后會在此目錄中產生一個 jboss-4.0.5.GA文件夾,在此文件夾下有一系列的文件和文件夾。然后在 C 盤根目錄下建一個 JBOSS 目錄,并將剛才解壓后 jboss-4.0.5.GA文件夾下的一系列文件和文件夾全都拷貝到 C : \JBOSS 目錄下。即將 JBOSS 安裝到了 C:\JBOSS 目錄中。
           
          二、配置運行環境及測試程序目錄
          一、設置環境變量
          1、 設置 JAVA_HOME 系統變量:在 windows 下方法為,在桌面上右鍵點擊“我的電腦”,選擇屬性,然后在彈出的頁面上點“高級” -> “環境變量”,然后在彈出的頁面中“系統變量”下點擊“新建”,然后在彈出的窗口中“變量名 (N) 輸入“ JAVA_HOME ”,在“變量值 (V) ”一欄中輸入“D:\Program Files\Java\jdk1.5.0_07”。
          2、 以同樣的方法設置: JBOSS_HOME 值為: C:\JBOSS
          3、 以同樣的方法在上面地方將 Path 的值后追加:以下內容:“ D:\Program Files\Java\jdk1.5.0_07;C:\JBOSS\bin ”
          二、創建程序目錄
          1、 在 C:\JBOSS 下新建一個 myproject 目錄,用于存放自己的所有項目。
          2、 在 myproject 目錄下新建三個目錄:一個是 jsp 目錄,其下用于存放所有的 jsp 文件和 servlet 文件及其它的 html , image 文件等;一個是 ejb 目錄,用于存放所有即將發布的 EJB 類文件;一個是 src 目錄,用于存放所有的 java 源文件。
          3、 在 jsp 目錄下新建一個目錄,并命名為: hello.war ,用來發布 WEB 程序,然后再在此目錄下新建一系列文件夾:即在 hello.war 下新建 WEB-INF (大寫)文件夾,再在 WEB-INF 下新建 classes 文件夾,再在 classes 文件夾下新建一個 hello 文件夾。
          4、 在 ejb 目錄下新建一個 client 目錄和一個 hello.jar 目錄,分別用于存放 EJB 客戶端和要發布的服務器端類。然后再在 client 目錄下新建一個 hello 目錄,再在此目錄下新建一個 ejb 目錄。然后在 hello.jar 目錄下新建一個 hello 目錄和一個 META-INF( 大寫 ) 目錄,并在 hello 目錄中新建一個 ejb 目錄。
           
           
          三、編寫測試程序及相關腳本
          一、 測試 JBOSS 安裝成功與否
          方法如下:進入 C : \JBOSS 目錄中,執行 run.bat –c all 啟動具有全部功能的 JBOSS 配置服務器。屏幕經過一會滾動后不再滾動。這時啟動 IE 輸入: http://localhost:8080/jmx-console/index.jsp 即可看到 IE 中出現一系列列表,即表明 JBOSS 啟動成功。此時可在啟動 JBOSS 的 DOS 窗口上按 Ctrl+C 關閉 JBOSS 服務器。
          二、 進入 C:\JBOSS\myproject\jsp\hello.war 目錄中,用記事本新建一個 index.jsp 文件,內容如下
          用于測試 jsp 程序
          <%@page contentType="text/html; charset=gb2312"%>
          <html>
          <head>
          <title></title>
          <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
          </head>
          <body bgcolor="#FFFFFF" text="#000000" topmargin="5">
          <%
          String hello = "Hello world!this created by jsp file!";
          out.println(hello);
          %>
          </body>
          </html>
          三、 進入 C:\JBOSS\myproject\src 目錄,新建一個 HelloWorld.java ,是一個 Servlet 類,內容如下
          package hello;
          import java.io.*;
          import javax.servlet.*;
          import javax.servlet.http.*;
          public class HelloWorld extends HttpServlet
          {
          public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
          {
          response.setContentType("text/html");
          PrintWriter out = response.getWriter();
          out.println("<hr>");
          out.println("Hello World! This is created by Servlet!");
          out.println("<hr>");
          }
          }
          到此,我們就建立好了用于測試的 JSP 文件和 Servlet 類,下面將建 HelloWorld 的無狀態 SessionBean 。
          四、 進入 C:\JBOSS\myproject\src 目錄,新建一個 Hello.java 文件,以實現 EJB 的 Remote 接口,內容如下,
          package hello.ejb;
          /**
          * Remote interface for Enterprise Bean: Hello
          * Remote 接口
          */
          public interface Hello extends javax.ejb.EJBObject {
          /**
          * 唯一的方法 hello ,向客戶端返回問候。
          */
          public String hello() throws java.rmi.RemoteException;
          }
          同樣在此目錄中新建一個 HelloLocal.java 文件,實現 Local 接口,內容如下:
          package hello.ejb;
          import javax.ejb.EJBLocalObject;
          public interface HelloLocal extends EJBLocalObject {
          public String hello();
          }
          同樣在此目錄中新建一個 HelloHome.java 文件,實現 Home 接口,內容如下:
          package hello.ejb;
          /**
          * Home interface for Enterprise Bean: Hello
          * Home 接口
          */
          public interface HelloHome extends javax.ejb.EJBHome{
          /**
          * Creates a default instance of Session Bean: Hello
          */
          public Hello create() throws javax.ejb.CreateException, java.rmi.RemoteException;
          }
          同樣在此目錄中新建一個 HelloLocalHome.java 文件,實現 LocalHome 接口,內容如下:
          package hello.ejb;
          import javax.ejb.EJBLocalHome;
          public interface HelloLocalHome extends EJBLocalHome {
          HelloLocal create() throws javax.ejb.CreateException;
          }
          同樣在此目錄中新建一個 HelloBean.java ,實現 EJB 類,內 [ 容如下:
          package hello.ejb;
          /**
          * Bean implementation class for Enterprise Bean: Hello
          */
          public class HelloBean implements javax.ejb.SessionBean{
          private javax.ejb.SessionContext mySessionCtx;
          /**
          * getSessionContext
          */
          public javax.ejb.SessionContext getSessionContext(){
          return mySessionCtx;
          }
          /**
          * setSessionContext
          */
          public void setSessionContext(javax.ejb.SessionContext ctx){
          mySessionCtx = ctx;
          }
          /**
          * ejbActivate
          */
          public void ejbActivate(){
          }
          /**
          * ejbCreate
          */
          public void ejbCreate() throws javax.ejb.CreateException{
          }
          /**
          * ejbPassivate
          */
          public void ejbPassivate(){
          }
          /**
          * ejbRemove
          */
          public void ejbRemove(){
          }
          /**
          * 商務方法
          */
          public String hello(){
          return "Hello,World! this is created by EJB!";
          }
          }
          至此,我們己經將 EJB 類所需的所有的所有類編寫好了,下面我們編寫用于測試此 EJB 程序的文件,具體來說有兩個:一個是用客戶端 Servlet 來調用 EJB ,另一個是用客戶端類來調用 EJB 。實現如下:
          五、 實現測試 EJB 的程序
          進入 C:\JBOSS\myproject\src 目錄中,新建一個 HelloServlet.java 文件,用于測試通過 Servlet 調用 EJB 。內容如下:
          package hello;
          import javax.servlet.*;
          import javax.servlet.http.*;
          import java.io.*;
          import javax.ejb.*;
          import javax.naming.InitialContext;
          import javax.naming.Context;
          import hello.ejb.*;
          import java.util.*;
          public class HelloServlet extends HttpServlet
          {
          private HelloHome home;
          public void init() throws ServletException
          {
          try
          {
          String initCtxFactory = getInitParameter(Context.INITIAL_CONTEXT_FACTORY);
          String providerURL = getInitParameter(Context.PROVIDER_URL);
          Properties env = new Properties();
          if(initCtxFactory!=null)
          {
          env.put(Context.INITIAL_CONTEXT_FACTORY,initCtxFactory);
          }
          if(providerURL!=null)
          {
          env.put(Context.PROVIDER_URL,providerURL);
          }
          Context ctx=new InitialContext(env);
          Object objRef = ctx.lookup("Hello");
          // 主接口
          home=(HelloHome)javax.rmi.PortableRemoteObject.narrow(objRef,hello.ejb.HelloHome.class);
          }catch(javax.naming.NamingException ne){
          System.out.println("Create Exception caught:"+ne);
          throw new ServletException(ne.toString());
          }catch(Exception e)
          {
          throw new ServletException(e.toString());
          }
          }
          public void service(HttpServletRequest req,HttpServletResponse res) throws IOException
          {
          res.setContentType("text/html");
          PrintWriter out =res.getWriter();
          out.println("<html><head><title>the first EJB</title></head>");
          try{
          // 組件接口
          Hello bean=home.create();
          out.println(bean.hello());
          }catch(javax.ejb.CreateException ce){
          out.println("Create Exception caught:"+ce);
          ce.printStackTrace(out);
          }catch(java.rmi.RemoteException re){
          out.println("Remote Exception caught:"+re);
          re.printStackTrace(out);
          }
          out.println("</body></html>");
          }
          }
          同樣在此目錄中,新建一個 HelloClient.java 文件,用于通過客戶端類測試 EJB ,內容如下:
          package hello.ejb;
          import java.util.*;
          import java.io.*;
          import javax.naming.InitialContext;
          import javax.rmi.PortableRemoteObject;
          import javax.naming.Context;
          import javax.rmi.PortableRemoteObject;
          import hello.ejb.*;
          public class HelloClient
          {
          public static void main(String[] args)
          {
          try
          {
          //jndi 配置 , 應實現為外部屬性文件
          Properties env = new Properties();
          //config.properties 文件應該放在和 hello 包目錄所在目錄的同級目錄中。即它和 hello 文件夾同在一個文件夾中。
          env.load(new FileInputStream("config.properties"));
          // Get a naming context
          System.out.println(env);
          InitialContext ctx = new javax.naming.InitialContext(env);
          System.out.println("Got context");
          // Get a reference to the Interest Bean
          //jboss 默認 jndi 名為 ejb-jar.xml 中的 :ejb-name
          Object ref = ctx.lookup("Hello");
          System.out.println("Got reference");
          // Get a reference from this to the Bean"s Home interface
          HelloHome home = (HelloHome)PortableRemoteObject.narrow(ref, HelloHome.class);
          // Create an Hello object from the Home interface
          Hello hello = home.create();
          // call the hello() method
          System.out.println(hello.hello());
          }catch(Exception e)
          {
          System.out.println(e.toString());
          }
          }
          }
          然后,我們還需增加一個此客戶端程序運行時所需的 JNDI 配置文件。方法如下:
          進入 : C:\JBOSS\myproject\ejb\client 目錄,用記事本新建一個 config.properties 文件,內容如下三行:
          java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
          java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
          java.naming.provider.url=jnp://localhost:1099
          六、 編寫服務器端的配置文件,
          首先進入 C:\JBOSS\myproject\jsp\hello.war\WEB-INF 目錄,用記事本創建一個 web.xml 文件,用于配置 servlet ,內容如下:
          <?xml version="1.0" encoding="gb2312"?>
          <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
          <web-app>
          <servlet>
          <servlet-name>HelloWorld</servlet-name>
          <display-name>HelloWorld</display-name>
          <servlet-class>hello.HelloWorld</servlet-class>
          </servlet>
          <servlet>
          <servlet-name>HelloServlet</servlet-name>
          <display-name>HelloServlet</display-name>
          <servlet-class>hello.HelloServlet</servlet-class>
          </servlet>
          <servlet-mapping>
          <servlet-name>HelloWorld</servlet-name>
          <url-pattern>/HelloWorld</url-pattern>
          </servlet-mapping>
          <servlet-mapping>
          <servlet-name>HelloServlet</servlet-name>
          <url-pattern>/HelloServlet</url-pattern>
          </servlet-mapping>
          </web-app>
          然后進入 C:\JBOSS\myproject\ejb\hello.jar\META-INF 目錄,創建一個 ejb-jar.xml 文件,內容如下:
          <?xml version="1.0" encoding="gb2312"?>
          <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
          "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
          <ejb-jar>
          <description>This is Hello EJB example</description>
          <display-name>helloeEJB</display-name>
          <enterprise-beans>
          <session>
          <display-name>Hello</display-name>
          <ejb-name>Hello</ejb-name>
          <home>hello.ejb.HelloHome</home>
          <remote>hello.ejb.Hello</remote>
          <local-home>hello.ejb.HelloLocalHome</local-home>
          <local>hello.ejb.HelloLocal</local>
          <ejb-class>hello.ejb.HelloBean</ejb-class>
          <session-type>Stateless</session-type>
          <transaction-type>Container</transaction-type>
          </session>
          </enterprise-beans>
          </ejb-jar>
          在此目錄中,再建一個 jboss-service.xml 文件,內容如下:
          <?xml version="1.0" encoding="gb2312"?>
          <jboss>
          <enterprise-beans>
          <session>
          <ejb-name>Hello</ejb-name>
          <jndi-name>Hello</jndi-name>
          </session>
          <secure>true</secure>
          </enterprise-beans>
          <reource-managers/>
          </jboss>
          七、 到此為止,我們將所有的測試文件和配置文件己編寫完成。
          八、 下面我們編寫編譯這些類文件的腳本程序
          進入 C:\JBOSS\BIN 目錄下,新建一個 com.bat 文件,內容如下:
          set classpath=.;c:\j2sdk1.4.2_06\lib\tools.jar;C:\JBOSS\client\jbossall-client.jar;C:\JBOSS\client\jboss-client.jar;C:\JBOSS\client\jboss-iiop-client.jar;C:\JBOSS\server\default\lib\jnpserver.jar;C:\JBOSS\client\jnp-client.jar;C:\JBOSS\client\log4j.jar;C:\JBOSS\client\jboss-j2ee.jar; C:\JBOSS\server\all\lib\javax.servlet.jar
          javac %1
          同樣在此目錄新建一個 runclient.bat ,用于運行客戶端程序,內容如下:
          set classpath=.;c:\j2sdk1.4.2_06\lib\tools.jar;C:\JBOSS\client\jbossall-client.jar;C:\JBOSS\client\jboss-client.jar;C:\JBOSS\client\jboss-iiop-client.jar;C:\JBOSS\server\default\lib\jnpserver.jar;C:\JBOSS\client\jnp-client.jar;C:\JBOSS\client\log4j.jar;C:\JBOSS\client\jboss-j2ee.jar; C:\JBOSS\server\all\lib\javax.servlet.jar
          java %1
           
          四、編譯和運行測試程序
          1、 進入 C:\JBOSS\myproject\src 目錄中,運行 :
          com *.java
          將產生一系列 .class 文件。
          2、 將產生的 HelloWorld.class 和 HelloServlet.class 拷貝到 C:\JBOSS\myproject\jsp\hello.war\WEB-INF\classes\hello 目錄中。
          3、 將產生的 HelloHome.class 和 HelloClient.class 和 Hello.class 文件放入 C:\JBOSS\myproject\ejb\client\hello\ejb 目錄中
          4、 將產生的 Hello.class 和 HelloBean.class 和 HelloHome.class 和 HelloLocal.class 和 HelloLocalHome.class 放入 C:\JBOSS\myproject\ejb\hello.jar\hello\ejb 目錄中。
          至此,我們己經完成了所有類的編譯,并將它們放入到適當的地方,目前為止,文件和目錄分布結構如下圖所示:
          這時,我們將 myproject 下 ejb 目錄中的 hello.jar 目錄和 jsp 下的 hello.war 目錄拷貝到
          C:\JBOSS\server\all\deploy 下。
          這時啟動 JBOSS 的工作臺自動會發布此兩個目錄。我們便可以測試了。
          啟動 JBOSS :
          run.bat –c all
          用 IE 打開 http://localhost:8080/hello/index.jsp 測試 JSP 文件
          用 IE 打開 http://localhost:8080/hello/HelloWorld 測試 Serlvet
          用 IE 打開 http://localhost:8080/hello/HelloServlet 測試用 Servlet 調用 EJB
          然后進入
          C:\JBOSS\myproject\ejb\client 運行:
          Runclient hello/ejb/HelloClient

          posted on 2006-11-20 14:51 topquan 閱讀(1522) 評論(2)  編輯  收藏 所屬分類: JBoss Server

          評論

          # re: JBOSS熱身:Windows環境下的JBOSS開發 2007-05-17 11:08 livia

          博主,你好!你安裝的jboss4.0.5.GA包。在引入javax.servlet.http包時,為什么我總是提示沒有找到該包。具體情況就是在IntelliJ IDEA中運行程序時,總是提示沒有找到javax.servlet.http包,我在jboss/server/default/下只有servler.jar.網上似乎有這個包的都是tomcat下的包。另外使用IntelliJ IDEA添加jar時,所使用的方法是settings->application server->attach classes?不知對不對?其他的attach Javadoc?Sources?
          這種情況可以解決嗎?
            回復  更多評論   

          # re: JBOSS熱身:Windows環境下的JBOSS開發 2007-05-17 15:46 topquan

          server\default\lib\javax.servlet.jar就是的,你找不到,是因為你沒有正確引入,在IDE中,可以通過Configure build path來添加你想要的jar文件。  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 英山县| 许昌县| 贵港市| 马鞍山市| 八宿县| 木兰县| 义乌市| 卢龙县| 甘南县| 榆树市| 崇州市| 津南区| 新绛县| 大港区| 清水县| 周宁县| 辽阳县| 定西市| 麻城市| 乌审旗| 南漳县| 莱西市| 伊通| 巨野县| 晋城| 灵宝市| 蓝田县| 寿光市| 沂水县| 姚安县| 伽师县| 台安县| 新田县| 东城区| 余姚市| 林口县| 土默特左旗| 瑞昌市| 克拉玛依市| 灵丘县| 大英县|