jboss3.2初步配置使用心得[windows2000+sql server 2000] (转)

jboss3.2初步配置使用心得[windows2000+sql server 2000] (转)[@more@]

1、下载安装
 <1>下载可以到jboss.org">www.jboss.org下载,我下的是jboss3.2.1。并且不是那个和tomcat整合的版本。
 <2>安装方法就是将文件解压到硬盘的某个目录下(例如:我的解到 d:jboss-3.2.1)。
2、配置
 <1>首先必须安装jdk。jboss不像webLOGIC自带Java标准开发包。我安装的是1.4  安装目录是C:j2sdk1.4.0 。
 <2>设置环境变量
 <<1>>JAVA_HOME设置为JDK的安装目录(例如:我的为C:j2sdk1.4.0)
 <<2>>classpath的设置:看看我的,大家就知道该包含哪些包了
 C:j2sdk1.4.0lib ools.jar;
 D:jboss-3.2.1serverdefaultlibjavax.servlet.jar;
 D:jboss-3.2.1serverdefaultlibjboss-J2EE.jar;
 .;
 D:jboss-3.2.1clientjbossall-client.jar;
 D:jboss-3.2.1client.NET.jar;
 D:jboss-3.2.1clientlog4j.jar;
3、运行
 进入jboss3.2.1的bin目录,执行run.bat就可以了。看到出现
 00:59:26,978 INFO  [Server] JBoss (MX MicroKernel) [3.2.1 (build: CVSTag=JBoss_3
 _2_1 date=200305041533)] Started in 17s:595ms
 这样的提示信息就说明启动成功,测试方法如下
 http://localhost:8080/jmx-console 你将看到jmx agent view

4、使用
 <1>html,JSP测试
 jboss的默认web目录是在jboss-3.2.1serverdefaultdeploy下面。下面就介绍测试jsp,servlet,EJB的方法:
 对于测试首先在deploy下建立一个test.war文件夹,然后将html,jsp文件都可以放到这里进行测试
 例如建立一test.jsp如下:
 
 
 
 
 通过http://localhost:8080/test/test.jsp调用就可得到当前日期时间。
 <2>设置sql SERVER2000的数据源然后在jsp中操调用操作数据库
 <<1>>下载安装SQL SERVER2000的jdbc驱动微软提供)
 <<2>>将mssqlserver,msbase,msutil三个jar文件复制到jboss-3.2.1serverdefaultlib目录下面
 <<3>>将jboss-3.2.1docsexamplesjcamssql-ds.XML复制一份到jboss-3.2.1serverdefaultdeploy下面
  部分修改如下:
  sources>
 
 ds
 JDBC:microsoft:sqlserver://localhost:1433;DatabaseName=Northwind
 <driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver
 sa
 word>
 
 

  上面的配置就是用ds作为数据源的名称,用不带密码的sa用户连接sql server的样板数据库northwind。你可以作适当的修改。
 <<4>>配置完成后,用如下testSql.jsp文件测试数据库操作
 
 
 
 
  javax.sql.DataSource ds;
 %>
 
  
 try {
 Context ctx = new InitialContext();
 ds = (javax.sql.DataSource)ctx.lookup("java:/ds");
 } catch (Exception e) {
 out.println("erro when connect to java naming api");
 }
 
 
 Connection conn = ds.getConnection();
 Statement st = conn.createStatement();
 String sqlStr = "select * from categories";
 ResultSet rs = st.executeQuery(sqlStr);
 while  ( rs.next() ) {
 out.println(rs.getString("categoryName")+"
");
 }
 rs.close();
 st.close();
 conn.close();
 %>
 
 将输出categories表的每条记录的categoryName,值得注意的是在mssql-ds.xml设置的jndi-name是ds,而真正的绑定是
 java:/ds。

 <3> servlet的配置测试
 <<1>>编写并编译如下的简单servlet
 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("");
 out.println("Hello World");
 out.println("

author's Mailto: email:zhjx_10@ hotmail.com">email:zhjx_10@hotmail.com
");
 }
 }
 <<2>>在test.war文件夹下建立一个WEB-INF目录,里面再建立一个classes目录和web.xml文件目录结构如下:
 [test.war]
 [WEB-INF]
 [classes]
 web.xml
 将编译成功的HelloWorld.class放置到classes目录下,web.xml内容如下:

 <?xml version="1.0" encoding="ISO-8859-1"?>

 BR> "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">
 
 
 
 HelloWorld
 HelloWorld   
 
  ping>
 HelloWorld
 /HelloWorld
 
 

 通过调用http://localhost:8080/test/HelloWorld 就可以看到hello world的输出
 
 <4>session bean的测试(Hello)
 这是一个简单的stateless session bean的测试
 <<1>>Hello.java

 import java.Rmi.RemoteException;
 import javax.ejb.EJBobject;

 public interface Hello extends javax.ejb.EJBObject {
 public String hello() throws java.rmi.RemoteException;
 }

 <<2>>HelloHome.java

 import java.rmi.RemoteException;

 public interface HelloHome extends javax.ejb.EJBHome {
 Hello create() throws java.rmi.RemoteException,javax.ejb.CreateException;
 }

 <<3>>HelloBean.java
 
 import javax.ejb.SessionBean;
 import javax.ejb.SessionContext;

 public class HelloBean implements javax.ejb.SessionBean {
 private SessionContext ctx;
 
 public void ejbCreate() {
 System.out.println("ejbCreate()");
 }
 
 public void ejbRemove() {
 System.out.println("ejbRemove()");
 }
 
 public void ejbActivate() {
 System.out.println("ejbActivate()");
 }
 
 public void ejbPassivate() {
 System.out.println("ejbPassivate()");
 }
 
 public void setSessionContext(javax.ejb.SessionContext ctx) {
 his.ctx = ctx;
 }
 
 public String hello() {
 System.out.println("hello()");
 return "hello,world";
 }
 }
 <<4>>ejb-jar.xml
 <?xml version="1.0"?>
 BR> '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN'
 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>

 
 
 
 Hello
 HelloHome
 Hello
 HelloBean
 Stateless
 Container
 
 
 
 <<5>>jboss.xml
 <?xml version="1.0" encoding="UTF-8"?>
 
 
 
 Hello
 HelloEJB
 
 
 
 <<6>>

 编译3个.java文件后按照以下路径存放文件(假设放到d:sessionEjb下面)
 d:sessionEjbHello.class
 d:sessionEjbHelloBean.class
 d:sessionEjbHelloHome.class
 d:sessionEjbMETA-INFejb-jar.xml
 d:sessionEjbMETA-INFjboss.xml

 然后打包d:sessionEjbjar cvf helloejb.jar *.*,打包后将helloejb.jar放到deploy目录下面,会在控制台看到如下输出

 11:35:30,815 INFO  [EjbModule] Creating
 11:35:30,825 INFO  [EjbModule] Deploying Hello
 11:35:30,835 INFO  [StatelessSessionContainer] Creating
 11:35:30,835 INFO  [StatelessSessionInstancePool] Creating
 11:35:30,835 INFO  [StatelessSessionInstancePool] Created
 11:35:30,845 INFO  [StatelessSessionContainer] Created
 11:35:30,845 INFO  [EjbModule] Created
 11:35:30,845 INFO  [EjbModule] Starting
 11:35:30,845 INFO  [StatelessSessionContainer] Starting
 11:35:30,905 INFO  [StatelessSessionInstancePool] Starting
 11:35:30,905 INFO  [StatelessSessionInstancePool] Started
 11:35:30,905 INFO  [StatelessSessionContainer] Started
 11:35:30,905 INFO  [EjbModule] Started
 11:35:30,905 INFO  [EJBDeployer] Deployed: file:/D:/jboss-3.2.1/server/default/d
 eploy/helloejb.jar
 11:35:30,925 INFO  [MainDeployer] Deployed package: file:/D:/jboss-3.2.1/server/
 default/deploy/helloejb.jar

 表明配置没有错误信息


 测试的客户端代码

 import javax.naming.InitialContext;
 import javax.naming.Context;
 import javax.naming.NamingException;
 import javax.ejb.CreateException;
 import java.rmi.RemoteException;
 import javax.rmi.PortableRemoteObject;
 import java.util.Properties;
 import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;


 public class HelloWorldClient extends JFrame implements ActionListener {
 public HelloWorldClient() {
 addWindowListener(new WindowAdapter() {
 public void windowClosing(WindowEvent e) {
 System.exit(0);
 }
 });
 setTitle("EJBClient");
 setSize(300,200);
 Container contentPane = getContentPane();
 area = new JTextArea(6,20);
 subButton = new JButton("Say hello to EJB");
 subButton.setActionCommand("sya");
 subButton.addActionListener(this);
 contentPane.add(area,"Center");
 contentPane.add(subButton,"South");
 }
 public void actionPerformed(ActionEvent e) {
 if ( e.getActionCommand().equals("sya") ) {
 ejbSays = getEJBInfo();
 area.append(ejbSays + " ");
 }
 }
 
 public String getEJBInfo() {
 try {
 Context jndiContext = getInitialContext();
 Object ref = jndiContext.lookup("HelloEJB");
 HelloHome home = (HelloHome)PortableRemoteObject.narrow(ref,HelloHome.class);
 Hello hw= home.create();
 ejbSays = hw.hello();
 
 } catch (java.rmi.RemoteException e) {
 e.printStackTrace();
 } catch ( Throwable t ) {
 t.printStackTrace();
 } finally {
 
 }
 return ejbSays;
 }
 
 public static Context getInitialContext() throws Exception {
 Properties p = new Properties();
 p.put(Context.INITIAL_CONTEXT_FACTORY,
   "org.jnp.interfaces.NamingContextFactory");
   p.put(Context.PROVideR_URL, "localhost:1099");
   return new InitialContext(p);
 }
 
 public static void main(String[] args) {
   JFrame win = new HelloWorldClient();
   win.pack();
   win.setVisible(true);
 }
 
 private String ejbSays="";
 private JTextField info;
 private JButton subButton;
 private JTextArea area;
 }

 作了一个简单的gui,主要注意的是getInitalContext()方法jboss的连接参数的设置和getEJBInfo()方法对ejb的调用

 将编译好的HelloWorldClient.class,HelloWorldClient$1.class,放置到d:sessionbean目录下(如果放到别的地方,确定可以
 通过路径找到HelloBean,HelloHome,Hello类

 d:sessionbeanjava HelloWorldClient

 点按钮就会返回hello world(做gui是为了复习一下以前的知识)

 <5>cmp的测试
 此cmp继续使用上面的数据源对应的northwind数据库,要在其中建一个表cd。
 <<1>>CD.java

 import javax.ejb.EJBObject;
 import java.rmi.RemoteException;

 public interface CD extends EJBObject {

 public Integer getId() throws RemoteException;
 public void setId(Integer id) throws RemoteException;
 
 public String getTitle() throws RemoteException;
 public void setTitle(String title) throws RemoteException;

 public String getArtist() throws RemoteException;
 public void setArtist(String artist) throws RemoteException;

 public String getType() throws RemoteException;
 public void setType(String type) throws RemoteException;

 public String getNotes() throws RemoteException;
 public void setNotes(String notes) throws RemoteException;
 }

 <<2>>CDHome.java

 import javax.ejb.EJBHome;
 import javax.ejb.CreateException;
 import javax.ejb.FinderException;
 import java.rmi.RemoteException;
 import java.util.Collection;

 public interface CDHome extends EJBHome {
 public CD create(Integer id,String  title,String artist,String type,String notes) throws RemoteException,CreateException;

 public CD findByPrimaryKey(Integer id) throws RemoteException,FinderException;

 public Collection findByType(String type) throws RemoteException,FinderException;

 
 }

 <<3>>CDBean.java
 import javax.ejb.EntityBean;
 import javax.ejb.EntityContext;
 import java.rmi.RemoteException;
 import javax.ejb.CreateException;

 public abstract class CDBean implements EntityBean {
 EntityContext ctx;

 public Integer id;
 public String title;
 public String artist;
 public String type;
 public String notes;

 public Integer ejbCreate(Integer id,String title,String artist,String type,String notes) throws CreateException{
 setId(id);
 setTitle(title);
 setArtist(artist);
 setType(type);
 setNotes(notes);
 return id;
 }

 public void ejbPostCreate(Integer id,String title,String artist,String type,String notes) {
 }

 public abstract String getTitle() ;

 public abstract void setTitle(String _title) ;
 
 public abstract Integer getId() ;

 public abstract void setId(Integer _id);
 
 public abstract String getArtist();

 public abstract void setArtist(String _artist) ;

 public abstract String getType() ;
 
 public abstract void setType(String _type) ;

 public abstract String getNotes() ;

 public abstract void setNotes(String _notes);

 public void setEntityContext(EntityContext ctx) {
 this.ctx = ctx;
 }

 public void unsetEntityContext() {
 ctx = null;
 }

 public void ejbActivate() {}
 public void ejbPassivate() {}
 public void ejbLoad() {}
 public void ejbStore() {}
 public void ejbRemove() {}
 }

 <<4>>ejb-jar.xml

 <?xml version="1.0"?>

 BR> "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
 "http://java.sun.com/dtd/ejb-jar_2_0.dtd">

 
 MusicCDs
 
 
 Modles a music CD
 CDBean
 CDHome
 CD
 CDBean
 Container
 java.lang.Integer
 False
 2.x
 cd
 id
 title
 artist
 type
 notes

 id

 
 
 findByType
 
 java.lang.String
 
 
  SELECT OBJECT(A)
 FROM cd AS A
 WHERE A.type=?1
 ]]>
 
 
 

 
 
 
 CDBean
 *
 
 Required
 
 
 

 <<5>>jboss.xml

 <?xml version="1.0" encoding="UTF-8"?>
 
 BR> "-//JBoss//DTD JBOSS 3.0//EN"
 "http://www.jboss.org/j2ee/dtd/jboss_3_0.dtd">


 
 
 
 CDBean
 ejb/cdbean
 
 
 

 <<6>>jbosscmp-jdbc.xml

 <?xml version="1.0" encoding="UTF-8"?>

 nbsp;
  "-//JBoss//DTD JBOSSCMP-JDBC 3.0//EN"
 "http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_3_0.dtd">

 
 
 java:/ds
 MS SQLSERVER2000
 true
 true
 true
 foreign-key
 

 

 
 CDBean
 cd

 
 id
 id
 

 
 title
 title
 

 
 artist
 artist
 

 
 type
 type
 

 
 notes
 notes
 
 

 

 
 

 需要解释的是
 true
 true
 会在部署的时候自动在库中建立数据表,而在删除的时候同时删除对应的表

 <<7>>编译部署
 编译3个.java文件,按照下面的目录结构存放(假设放在d:cmpbean下面)
 d:cmpbeanCD.class
 d:cmpbeanCDHome.class
 d:cmpbeanCDBean.class
 d:cmpbeanMETA-INFejb-jar.xml
 d:cmpbeanMETA-INFjboss.xml
 d:cmpbeanMETA-INFjbosscmp-jdbc.xml

 打包:d:cmpbeanjar cvf cdejb.jar *.*

 将cdejb.jar复制到deploy目录下

 <<8>>客户端代码测试

 import javax.naming.InitialContext;
 import javax.naming.Context;
 import javax.naming.NamingException;
 import javax.ejb.CreateException;
 import java.rmi.RemoteException;
 import javax.rmi.PortableRemoteObject;
 import java.util.Properties;
 import java.util.*;

 public class CDClient {
 public static Context getInitialContext() throws Exception {
 Properties p = new Properties();
 p.put(Context.INITIAL_CONTEXT_FACTORY,
   "org.jnp.interfaces.NamingContextFactory");
 p.put(Context.PROVIDER_URL, "localhost:1099");
 return new InitialContext(p);
 }

 public static void main(String[] args) {
 try {
 Context jndiContext = getInitialContext();
 Object ref= jndiContext.lookup("ejb/cdbean");
 CDHome home = (CDHome)PortableRemoteObject.narrow(ref,CDHome.class);
 home.create(new Integer(100),"Bohn jove","rock and roll","rock","a good type");
 home.create(new Integer(200),"黑宝","rock","rock","roll star");
 home.create(new Integer(300),"mike jackson","sssss","iiop","none");
 Collection c = home.findByType("rock");
 Iterator i = c.iterator();
 while ( i.hasNext() ) {
 String ss = ( (CD)javax.rmi.PortableRemoteObject.narrow(i.next(),CD.class)).getNotes();
 System.out.println(ss);
 }

 } catch (java.rmi.RemoteException e) {
 e.printStackTrace();
 } catch (Throwable t) {
 t.printStackTrace();
 } finally {
 }
 }
 }

 请确保通过类路径可以找到CD.class,CDHome.Class.
 执行java CDclient 将看到如下输出:

 D:cmpbean>java CDClient
 a good type
 roll star

 D:cmpbean>

5、结束语

 首先我也是个初学者,自己在csdn上多次提问有关jboss的问题,却所得到回答甚少。
 而且搜索了很久也找不到相应的文档可以了解jboss3.2的使用。
 为此希望写此文档为初学者提供一点帮助,错误的地方还请指正。
 另外、对于jboss3.2 mssql-xa-ds.xml的设置以及连接池的
 使用方法,有谁弄过,请告诉我,不胜感激。 email: zhjx_10@hotmail.com

 

 

 


 

 

 

 

 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10748419/viewspace-959191/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10748419/viewspace-959191/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值