<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java學習

    java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經搬家了,新的地址是 http://www.javaly.cn 如果有對文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會盡力幫助解決。一起進步

     

    使用JBoss和PostgreSQL-----快速開發EJB和J2EE Web Application

    使用JBoss和PostgreSQL-----快速開發EJB和J2EE Web Application


    Developing J2EE Web Application on Jboss and PostgreSQL(chinese version)


    作者:Han QW, 轉載請指明出處 如有不當之處,敬請指出


    先安裝JSDK,再安裝JBoss.
    安裝JSDK,必須獲得一套對應于用戶的操作系統的JDK,
    我的安裝的文件目錄是
    WINDOWS2000: d:s1studio_jdkj2sdk1.4.1
    linux: /root/s1studio_jdk/j2sdk1.4.1
    為了用EJB, 需要一個j2ee-1.3.jar或者j2ee-1.2.jar,
    如果安裝了Sun One Studio 或者 J2EE (www.sun.com )這個文件已經有.
    把這個文件放在classpath路徑上.
    或者使用jboss-j2ee.jar, 安裝JBoss后在$JBossclient中可找到.
    建議安裝Sun One Studio, 用Sun One Studio編譯JAVA源程序,
    不用設置classpath, 省去不少過程.

    安裝JBoss:
    把JBoss的壓縮包解開,放在任一目錄上,
    我的安裝的文件目錄是
    /dose/jboss-3.0.4_tomcat-4.1.12 (REDHAT8.0)
    E:jboss-3.0.4_tomcat-4.1.12 (WINDOWS2000)
    WINDOWS2000, linux共用同一套JBoss.

    配置JBoss:
    啟動JBoss需要執行一個腳本文件:
    linux:run.sh
    WINDOWS對應的是:run.bat

    (1)
    在JBossin un.bat (for Windows)開頭插入一行
    set JAVA_HOME = d:s1studio_jdkj2sdk1.4.1
    在JBossin un.sh (for Linux)開頭插入一行
    JAVA_HOME="/root/s1studio_jdk/j2sdk1.4.1"

    或者
    (2)設置系統環境變量JAVA_HOME,指向JDK

    運行JBoss, run.sh或者run.bat
    當看到啟動JBoss的信息時,說明啟動了.
    服務器簡單的測試:
    JBoss默認的WEB端口為8080,我們可以在打開一個瀏覽器輸入地址
    http://localhost:8080/jmx-console
    當在瀏覽器看到JBoss的信息時,說明安裝配置JBoss成功了.



    建立下面的目錄和文件(注意大小寫).

    FIRST.EAR
    |
    |-----META-INF (application.xml)
    |
    |-----First.jar
    | |-----META-INF (ejb-jar.xml,jboss.xml)
    | `-----Dev
    | |-----First(FirstSession.java, FirstSessionHome.java, FirstSessionBean.java)
    | |-----Delegate(NewDelegate.java)
    | `-----Dao(MysqlDao.java)
    |
    `-----First.war(index.jsp)
    |
    `-----WEB-INF (jboss-web.xml, web.xml)
    |-----classes
    `-----lib

    /*
    **
    **MysqlDao.java
    **
    */

    package Dev.Dao;import java.sql.Connection;import java.sql.SQLException;import java.sql.Statement;import java.sql.ResultSet;import javax.naming.InitialContext;import javax.sql.DataSource;public class MysqlDao { public Connection getConnection() throws Exception { InitialContext ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("java:/PostgresDS"); Connection conn = null; Statement stmt = null; try { conn = ds.getConnection(); } catch (SQLException sqlEx) { System.out.println("Error connect to pool."); } return conn; } public String getName(String id) throws Exception { Connection conn = null; Statement stmt = null; ResultSet rs = null; String name = ""; try { conn = getConnection(); if ( conn !=null )System.out.println("Get conecttion. "+ conn.toString()); stmt = conn.createStatement(); if ( stmt !=null )System.out.println("Get Statement. "+ stmt.toString()); String sql = "SELECT * from users where id = ´"+id+"´"; System.out.println("Sql from getId(): "+sql); rs = stmt.executeQuery(sql); if ( rs !=null )System.out.println("Get result. "); if (rs.next()){ name = rs.getString("name"); } } catch (Exception sqlEx) { System.out.println("Error from getName()."); System.out.println("Error from DAO.getName() :" + sqlEx.getMessage()); }finally { if (conn != null) { try { conn.close(); } catch (Exception sqlEx) { } } } return name; } public String getCountry(String id) throws Exception { Connection conn = null; Statement stmt = null; String name = ""; try { conn = getConnection(); stmt = conn.createStatement(); String sql = "SELECT * from users where id = ´"+id+"´"; System.out.println("Sql from getCountry(): "+sql); java.sql.ResultSet rs = stmt.executeQuery(sql); if (rs.next()) { name = rs.getString("Country"); } } catch (SQLException sqlEx) { System.out.println("Error from getCountry()."); }finally { if (conn != null) { try { conn.close(); } catch (Exception sqlEx) { } } } return name; }}


    /*
    **
    **NewDelegate.java
    **
    */

    package Dev.Delegate;import java.lang.*;import Dev.First.*;public class NewDelegate { Dev.First.FirstSession bean = null; public NewDelegate( ){ try { javax.naming.InitialContext ctx = new javax.naming.InitialContext(); Object objref = ctx.lookup("ejb/FirstSession"); Dev.First.FirstSessionHome testBean = (Dev.First.FirstSessionHome) javax.rmi.PortableRemoteObject.narrow (objref,Dev.First.FirstSessionHome.class); bean = testBean.create(); System.out.println("From JSP"); } catch (Exception NamingException) { NamingException.printStackTrace(); } } public String Welcome() { String msg = ""; try { msg = bean.Welcome(); } catch (Exception NamingException) { NamingException.printStackTrace(); } return msg; } public String getName(String id) { String name = ""; try { name = bean.getName(id); } catch (Exception NamingException) { NamingException.printStackTrace();} return name; } public String getCountry(String id) { String country = ""; try { country = bean.getCountry(id); } catch (Exception NamingException) { NamingException.printStackTrace();} return country; } }

    /*
    **
    **FirstSession.java
    **
    */

    package Dev.First;import java.lang.*;import java.rmi.RemoteException;import javax.ejb.CreateException;import javax.ejb.EJBException;import javax.ejb.SessionBean;import javax.ejb.SessionContext;public interface FirstSession extends javax.ejb.EJBObject{ public String Welcome() throws java.rmi.RemoteException; public String getName(String id) throws java.rmi.RemoteException; public String getCountry(String id) throws java.rmi.RemoteException;}


    /*
    **
    **FirstSessionHome.java
    **
    */

    package Dev.First;import java.lang.*;import java.rmi.RemoteException;import javax.ejb.CreateException;import javax.ejb.EJBException;import javax.ejb.SessionBean;import javax.ejb.SessionContext;public interface FirstSessionHome extends javax.ejb.EJBHome{public FirstSession create() throws javax.ejb.CreateException, java.rmi.RemoteException;}


    /*
    **
    **FirstSessionBean.java
    **
    */

    package Dev.First;import java.rmi.RemoteException;import javax.ejb.CreateException;import javax.ejb.EJBException;import javax.ejb.SessionBean;import javax.ejb.SessionContext;public class FirstSessionBean implements SessionBean{public void ejbCreate() throws CreateException {}public String Welcome(){ String msg="Hello! This My Session Bean From Jboss."; System.out.println(msg); return msg;}public String getName(String id){ String name = ""; System.out.println("From bean before getName :"+ name); try{ Dev.Dao.MysqlDao dao = new Dev.Dao.MysqlDao(); name = dao.getName(id); System.out.println("From bean after getName :"+ name); }catch(Exception e){ System.out.println(e.getMessage());} return name;}public String getCountry(String id){ String country = ""; try{ Dev.Dao.MysqlDao dao = new Dev.Dao.MysqlDao(); country = dao.getCountry(id); }catch(Exception e){ } return country;}public void setSessionContext( SessionContext aContext ) throws EJBException {}public void ejbActivate() throws EJBException {}public void ejbPassivate() throws EJBException {}public void ejbRemove() throws EJBException {}}




    /*Don´t put the following lines into index.jsp
    **
    **index.jsp
    **
    */Don´t put the above lines into index.jsp


    <%@page language="java" %><% String msg = ""; String msg1 = ""; Dev.Delegate.NewDelegate nn = new Dev.Delegate.NewDelegate(); if (request.getParameter("id") != null && request.getParameter("id") != ""&& !request.getParameter("id").equals("")){ String id = request.getParameter("id"); String name = ""; Dev.Dao.MysqlDao dao = new Dev.Dao.MysqlDao(); name = nn.getName(id); //access database through session bean //name = dao.getName(id); //access database directly if(name!= null && !name.equals("")){ msg1 ="Welcome " + name +" ! You are from "+ dao.getCountry(id)+ " ."; }else{ msg1 ="Please Check Your ID. : " + id; } } msg = nn.Welcome() ;%><html><head><title>Welcome</title></head><body bgcolor="#FFFFCC"><br> <%= msg %> <br><FORM ACTION="index.jsp" method="post"><P>Your ID:<INPUT TYPE="TEXT" NAME="id" size = "10"></P><P><INPUT TYPE="SUBMIT" NAME="SUBMIT"></P></FORM><br><br><%=(msg1 == "")? "":msg1 + "<br> <br> <br>Connect to Database OK." %></body></html>



    <!--不要將此以下5行存入文件
    **
    **ejb-jar.xml
    **
    -->不要將此以上5行存入文件, 下同.

    <?xml version="1.0" encoding="UTF-8"?><!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>First</description> <display-name>First</display-name><enterprise-beans><!-- Session Beans --><session id="MyFirstSession"> <display-name>My First Session Bean</display-name> <ejb-name>FirstSession</ejb-name> <home>Dev.First.FirstSessionHome</home> <remote>Dev.First.FirstSession</remote> <ejb-class>Dev.First.FirstSessionBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type></session></enterprise-beans><assembly-descriptor></assembly-descriptor></ejb-jar>




    <!--
    **
    **jboss.xml
    **
    -->

    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS//EN" "http://www.jboss.org/j2ee/dtd/jboss.dtd"><jboss><enterprise-beans><session><ejb-name>FirstSession</ejb-name><jndi-name>ejb/FirstSession</jndi-name></session></enterprise-beans><resource-managers></resource-managers></jboss>



    <!--
    **
    **jboss-web.xml
    **
    -->

    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 2.2//EN" "http://www.jboss.org/j2ee/dtd/jboss-web.dtd"><jboss-web> <resource-ref> <res-ref-name>jdbc/PostgresDS</res-ref-name> <res-type>javax.sql.DataSource</res-type> <jndi-name>java:/PostgresDS</jndi-name> </resource-ref></jboss-web>



    <!--
    **
    **web.xml
    **
    -->

    <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN""http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"><web-app><resource-ref> <description>Postgresql driver</description> <res-ref-name>jdbc/PostgresDS</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth></resource-ref></web-app>




    <!--
    **
    **application.xml
    **
    -->

    <?xml version="1.0" encoding="ISO-8859-1"?><application><display-name>First</display-name><module><web><web-uri>First.war</web-uri><context-root>/First</context-root></web></module><module><ejb>First.jar</ejb></module></application>



    編譯JAVA源程序,生成class文件.
    進入JAVA源程序目錄, 運行:
    javac -classpath %classpath%;%jboss%serverdefaultdeployFirst.earFirst.jar *.java
    或者
    javac -classpath %jboss%serverdefaultdeployFirst.earFirst.jar;%jboss%clientjboss-j2ee.jar *.java

    Copy 目錄First.ear to jbossserverdefaultdeploy.
    打開瀏覽器輸入地址 http://localhost:8080/First

    到此, 在瀏覽器看到: Hello! This My Session Bean From Jboss.
    說明這個EJB工作了.

    如果按按鈕, 沒反應或出錯. 原因沒安裝配置數據庫, 下面安裝配置Postgres數據庫


    For Windows2000
    下載 PgSQL731wina1.exe (http://www.postgresql.org),
    Finally you will see the next line, you need enter the password for Administrator
    最后你將看下一個行,你必須為用戶Administrator輸入password.
    ********************
    Enter password of user `.Administrator´:123456
    ********************

    記下此password, 我的口令是123456.

    從開始菜單 > Programm > PostgresSQL > Adjust PostgresSQL Configuration file
    它將在Wordpad中打開PostgresSQL Configuration文件, 找到下列行,


    #
    # Connection Parameters
    #
    #tcpip_socket = false
    #ssl = false

    #max_connections = 32
    #superuser_reserved_connections = 2

    #port = 5432

    修改編輯:
    #
    # Connection Parameters
    #
    tcpip_socket = true
    #ssl = false

    #max_connections = 32
    #superuser_reserved_connections = 2

    port = 5432

    接著,保存文件.

    起動PostgresSQL服務器:
    開始菜單>Programm>PostgresSQL>Utilies>Start PostgresSQL server
    起動命令行:
    開始菜單>Programm>PostgresSQL>Utilies>Command Shell


    執行下列命令,準備數據,
    Administrator@SAN /
    $ dir

    $ cd bin

    $ createdb test

    $ psql test

    test=# create table users
    test-# (name varchar(20),
    test(# id varchar(20),
    test(# country varchar(20));
    test=# insert into users values (´Sam´, ´123´, ´China´);
    test=# insert into users values (´Tom´, ´321´, ´USA´);
    test=# insert into users values (´Sean´, ´231´, ´France´);

    test=# select * from users;
    name | id | country
    ------+-----+---------
    Sam | 123 | China
    Tom | 321 | USA
    Sean | 231 | France
    (3 rows)

    test=#

    到此, 數據準備就緒.



    For RedHat:
    以root登陸, 執行下列命令,準備數據,

    mkdir /usr/local/pgsql/data
    chown postgres /usr/local/pgsql/data
    su - postgres
    /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

    Open and edit /usr/local/pgsql/data/pg_hba.conf

    local all trust
    host all 127.0.0.1 255.255.255.255 trust

    just delete #, and save.


    [root@localhost root]# su - postgres
    -bash-2.05b$ /usr/bin/postmaster -i -D /usr/local/pgsql/data >logfile 2>&1 &
    -bash-2.05b$ /usr/bin/createdb test
    -bash-2.05b$ /usr/local/pgsql/bin/psql test
    test=# .......the following same as Windows2000

    到此, 數據準備就緒.


    執行shutdown.bat or shutdown.sh, 停止Jboss Server.

    找到JDBC drive.
    為 了在Jboss中使用連接池,需要拷貝jdbc drive 到Jboss/server/default/deploy , 在linux 我們能找到/usr/share/pgsql/pgjdbc2.jar,在wondows2000,我們能找到 PostgreSQLusrsharepostgresqljavapostgresql.jar
    把其中之一復制到Jboss/server/default/deploy


    配置Jboss

    (1) 復制 $Jboss/examples/jca/postgres-service.xml 到 $Jboss/server/default/deploy/

    (2) 打開編輯Jboss/server/default/deploy/postgres-service.xml

    <attribute name="JndiName">PostgresDS</attribute>
    <attribute name="ManagedConnectionFactoryProperties">
    <properties>
    <config-property name="ConnectionURL" type="java.lang.String">jdbc:postgresql://localhost/test</config-property>
    <config-property name="DriverClass" type="java.lang.String">org.postgresql.Driver</config-property>
    <!--set these only if you want only default logins, not through JAAS -->
    <config-property name="UserName" type="java.lang.String">Administrator</config-property>
    <config-property name="Password" type="java.lang.String">123456</config-property>
    </properties>

    In my example, set Username Administrator, password 123456 for windows 2000
    set Username Postgres, no password for Linux.
    在我的例子中,
    windows2000, 用戶:Administrator,password:123456
    Linux(RH8.0), 用戶:Postgres, 沒有password
    因 為PostgresSQL和windows2000使用不同的default用戶名,所以在linux和window2000中這文件不同.當然,你可以 加相同的PostgresSQL用戶名和password在linux和window2000中, 這樣這文件就相同了.

    保存文件.

    (3) 打開編輯 $Jboss/server/default/conf/standardjbosscmp-jdbc.xml
    找到:
    <datasource>java:/DefaultDS</datasource>
    <datasource-mapping>Hypersonic SQL</datasource-mapping>
    加入:
    <datasource>java:/PostgresDS</datasource>
    <datasource-mapping>Postgres</datasource-mapping>
    保存文件.

    (4) open and edit $Jboss/server/default/conf/standardjaws.xml
    找到:
    <datasource>java:/DefaultDS</datasource>
    <type-mapping>Hypersonic SQL</type-mapping>
    <debug>false</debug>
    加入:
    <datasource>java:/PostgresDS</datasource>
    <type-mapping>Postgres</type-mapping>
    <debug>false</debug>
    保存文件.

    現在重起JBoss.
    打開瀏覽器輸入地址 http://localhost:8080/First
    輸入ID,按按鈕.

    posted on 2008-10-06 15:54 找個美女做老婆 閱讀(521) 評論(0)  編輯  收藏


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


    網站導航:
     

    導航

    統計

    公告

    本blog已經搬到新家了, 新家:www.javaly.cn
     http://www.javaly.cn

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 午夜亚洲AV日韩AV无码大全| 色吊丝最新永久免费观看网站| 伊人久久大香线蕉免费视频| 日本高清免费中文在线看| 国产精品久久久久久亚洲影视 | 国产免费毛不卡片| 91成年人免费视频| 亚洲精品国产第1页| 亚洲综合色一区二区三区小说| 亚洲国产美女在线观看| 精品丝袜国产自在线拍亚洲| 亚洲色图激情文学| 久久亚洲色WWW成人欧美| 日本免费精品一区二区三区| 国产福利电影一区二区三区,免费久久久久久久精 | 国产精品亚洲一区二区无码| 日韩色视频一区二区三区亚洲| 国产成人久久精品亚洲小说| 一级A毛片免费观看久久精品 | 国产免费爽爽视频在线观看 | 亚洲AV无码精品国产成人| 国产精品亚洲片在线花蝴蝶| 一区二区三区免费在线观看| 国产成人无码区免费网站| 最近高清中文字幕免费| 国产精品美女午夜爽爽爽免费| 国产色爽女小说免费看| 国产精品亚洲产品一区二区三区| 国产亚洲婷婷香蕉久久精品| 久久亚洲精品成人无码网站| 中文字幕亚洲综合久久综合| 美女视频黄频a免费观看| 手机看片国产免费永久| 在线永久看片免费的视频| 免费看美女让人桶尿口| 国产成人精品久久亚洲高清不卡 | 久久精品国产亚洲AV麻豆不卡| 亚洲伊人色一综合网| 精品日韩亚洲AV无码一区二区三区| 亚洲人成高清在线播放| 国产精品日本亚洲777|