UML软件工程组织

 

 

用jbuilder7+jboss3+vss开发EJB
 
作者:林佩雯 来源:希赛网
 

1. 前言

在n年前java只是一种编程语言的理解,但现在的java非常强大,其含义也发生变化,我们可以理解为海陆空总集合的部队,其下属分支很多,如jsp、servlet、javabean、applet、ejb、jms、j2se(无线通讯用)、java2D、java3D……

此处我们着重介绍java的web应用和开发,即jsp、servlet、javabean、applet、ejb等。其中applet是比较特殊的,它需要jre(java运行环境)的支持,并且对jre版本有要求,即applet是用jdk1.4开发的,那么jre也得1.4版本的。

java的web开发需要视情况而定,如果只是编译jsp、servlet、javabean、applet等,只需要安装jdk(java开发工具包),如果加上ejb,就得jdk+j2ee。jdk、j2ee的安装程序到http://java.sun.com下载,本例的jdk安装在C:\j2sdk1.4.0,j2ee安装在c:\j2ee,读者可根据安装的目录自定。安装后,配置的环境变量如下,
  CLASSPATH=.;C:\j2sdk1.4.0\lib\tools.jar;C:\j2ee\lib\j2ee.jar;
  J2EE_HOME=c:\j2ee
  java_HOME=C:\j2sdk1.4.0
  Path=C:\j2sdk1.4.0\lib\tools.jar;C:\j2sdk1.4.0\lib\dt.jar;C:\j2sdk1.4.0\bin;C:\j2sdk1.4.0\jre\bin;

如果Path变量有其他的值,请在后面续接此处的值。

在windows2000XXX中,开始->设置->控制面板->系统->高级->环境变量->系统变量中设置上述的值。在window9X中,上述的变量写在autoexec.bat文件中,格式是变量=值(回车)。
  测试jdk是否可用的方法是在c盘下新建一个Test.java文件,写入以下代码
  import java.util.Date;
  public class Test
  {
  //构造函数
  public Test(){}
  //显示当前时间的方法
  public String getDate()
  {
  Date date=new Date();
  return date.toString();
  }
  }

在dos状态下,键入C:\>javac ./Test.java,编译通过后,同目录下新增Test.class,说明jdk成功安装。测试j2ee:在dos状态下,键入C:\j2ee\bin>j2ee -verbose,如果启动的过程中没有错误,不要关闭窗口,在IE浏览器中访问HTTP://localhost:8000,看到默认的j2ee主页,由此可看出j2ee除了自带工具包外还可以充当web服务器的角色。

2. jbuilder、jboss、ms sql2000配置

开发ejb应用系统,较好的开发发布的工具组合是websphere+visualAge,两者都是ibm出品,协同工作性非常好,包括建模、版本控制、ejb开发、web发布等一体化,让程序员从底层的ejb开发中解放出来。但该组合的价格大概是十万人民币,不是每个客户都可以承受的,所以我们推荐另一个组合:jbuilder7+jboss3,数据库选择微软的sql server2000(简称sql2000)。部分介绍参考了刘晓巍(liuxiaowei2000@sina.com)的文章,并加入作者的见解。

jboss每一个版本的差别很大,它不象传统的软件兼容性好。此例jboss的版本是jboss-3.0.4_tomcat-4.0.6,下载地址:http://prdownloads.sourceforge.net/jboss/jboss-3.0.4_tomcat-4.0.6.zip?download。

数据库sql2000和jboss一起协同工作,有两种方式,一种是odbc-jdbc,一种是jdbc。许多web服务器自带odbc-jdbc驱动,无需下载,在控制面板->管理工具->数据源(odbc)中设置数据源即可使用,但如果要开发ejb,要使用jdbc驱动。很多公司提供ms sql2000的jdbc驱动(属第四种类型驱动,即纯java驱动),作者建议大家到微软的官方站点下载:http://www.microsoft.com/downloads/details.aspx?FamilyID=86212d54-8488-481d-b46b-af29bb18e1e5&DisplayLang=en。下载后安装,默认安装路径是C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC,jdbc的驱动包在lib中,分别是msbase.jar、mssqlserver.jar、msutil.jar。

jboss和jbuilder协同工作,需要下载并安装JBossOpenTool For JBuilder 7,下载地址:http://weisoft.myrice.com/download/JBuilder_JBossOT.jar。将下载的JbossOpenTool.jar拷贝至Jbuilder7的lib\ext目录下,重启动JBuilder。

准备工作完成后,我们开始配置工作:

一、在jboss中配置sql2000的JDBC驱动

将msbase.jar, msutil.jar, mssqlserver.jar三个文件拷贝至Jboss的Server\default\lib目录下。将Jboss的docs\examples\jca目录下的mssql-service.xml, mssql-xa-service.xml文件拷贝至Jboss的server\default\deploy目录下,修改mssql-service.xml,/*…..*/中是说明文件,千万不要拷贝到该xml文件中。
<config-property name="ConnectionURL" type="java.lang.String">
jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Northwind
</config-property>
/*------sql2000默认端口是1433,如果sql2000和jboss分装不同机器,则localhost要改成数据库的ip地址,数据库选择sql2000自带的Northwind数据库,你可以改成别的数据库------*/
<config-property name="UserName" type="java.lang.String">sa</config-property>
/*------数据库的用户名----*/
<config-property name="Password" type="java.lang.String">csdn</config-property>
/*------与数据库用户名对应的密码------*/
修改mssql-xa-service.xml,ServerName、DatabaseName要和上个文件的一样。
<config-property name="XADataSourceProperties" type="java.lang.String">
ServerName=localhost;DatabaseName=Northwind;SelectMethod=cursor
</config-property>

二、运行jboss

运行“jboss安装目录\bin\run.bat”,打开IE,在地址栏输入 http://localhost:8080,出现一些错误信息,大意是没有web应用程序等,读者可以先在“jboss安装目录\server\default\deploy”中新建一个简单的web应用程序,或者等待后面用jbuilder中发布一个web应用,如果需要新建,步骤如下:
“jboss安装目录\server\default\deploy”中新建文件夹db_test.war,在db_test.war中新建index.jsp,内容如下:
<%@page contentType="text/html"%>
<%@ page import="java.sql.*, javax.sql.DataSource, javax.naming.InitialContext" %>
<h3>Test sql2000 Database</h3>
<%
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:/MSSQLDS");
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM Employees"); while ( rs.next() ) {
out.println( rs.getInt(“EmployeeID”) + "<br>");
}
conn.close();
%>
在db_test.war中新建文件夹WEB-INF,其中有两个文件jboss-web.xml和web.xml
jboss-web.xml内容是
<jboss-web>
</jboss-web>
web.xml内容是
<?xml version="1.0"?>
<!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></web-app>
访问http://localhost:8080/db_test,成功后表示和数据库正常连接了。

三、配置JBuilder

(1)启动jbuilder,Tools->Enterprise Setup,单击Database Drivers页上的Add, 在弹出的对话框中单击New,. 在弹出的对话框中填写Name为MS SQL Server JDBC, Location选择User Home,单击Add按钮,选择msbase.jar, msutil.jar, mssqlserver.jar,单击OK关闭当前对话框,可以看到MS SQL Server JDBC已被加入,单击OK关闭当前对话框,再次单击OK,配置完成。

(2)重起JBuilder 7,Tools->Configure Servers,选中左侧的JBoss 3.X,选中右边的Enable Server,填写:
General页:Home Directiry = F:\jboss-3.0.4_tomcat-4.1.12 // <——JBoss的安装目录
Main Class = org.jboss.Main
VM Parameters =-ms64m -mx64m -Dprogram.name=run.bat
Server Parameters = -c default
Working Directory = F:\jboss-3.0.4_tomcat-4.1.12\bin
Custom页:JBoss Installation Directory = F:\jboss-3.0.4_tomcat-4.1.12 // <——JBoss的安装目录
Tomcat 4X JBuilder Installation Directory = F:\JBuilder7\jakarta-tomcat-4.0.3 //<——Tomcat的安装目录
JBoss Configuration to Use = default
单击OK。

(3)Tools—>Configure Libraries, 在弹出的对话框中单击New按钮,在Name栏中填写JBoss Libs,单击Add按钮,加入JBoss目录下\Server\default\lib目录下的javax.servlet.jar和jboss-j2ee.jar文件,单击OK。

(4)Tools—>Database Pilot,新打开的“Database Pilot”窗口是察看数据库的,相当于数据库服务器的客户端,选择File—>New…,
Driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
URL=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName= Northwind
单击OK,在左边窗口出现我们新建的数据库连接,双击,输入用户名密码就可以浏览数据库Northwind中的数据表。注意此处URL的写法要刚刚配置的jboss的xml文件一样。

如果读者没法连上数据库,可以把sql2000的jdbc驱动msbase.jar、mssqlserver.jar、msutil.jar拷贝到“jbuilder安装目录\lib”中。

3. 在jbuilder中开发ejb

一、新建一个Project:选择File->New Project,在Name栏填写JBossDemo,在Directory栏输入保存路径,其它不变,单击Finsih。选择Project->Project properties,在Path页的Required Libraries中单击Add按钮,在弹出的对话框中选择我们刚才建立的JBoss Libs,单击OK。选择Server页,选中Single Server For All Service in Project,在下拉列表中选择JBoss 3.X,单击OK。

二、新建一个EJB Module:选择File->New,在弹出的对话框中选择Enterprise页中的EJB Module图标,单击OK。在弹出的对话框中Name栏填写JBossDemoModule,其它不变,单击OK。

三、新建两个CMP:右键单击左下角的DataSource,选择Import Schema From Database,在弹出的对话框“Database Schema Provider”中选择“Choose Existing Connection”,在弹出的“Select Database”中选择我们刚建立的“jdbc:microsoft:sqlserver…”,单击ok,在“Database Schema Provider”中,按如下信息填写,其他不变:
UserName:sa
Password:csdn
JNDI Name:java:/MSSQLDS
Extended properties:DatabaseName=Northwind
勾选All Schemas和Views项
单击OK。成功的话,在DataSource下面将出现一个java:/MSSQLDS项,单击其左侧的+号,将其展开,将会看到表名。右键单击Employees表,选择CMP 2.0 Entity Bean, 同样右键单击Orders表,选择CMP 2.0 Entity Bean。

四、建立表关联的关系:右键单击右侧的代表Employees表的矩形,选择Add->Relationship后,单击指向代表Oderss表的矩形后,将会看到一条线把两个矩形连接起来了,同时Employees表多了一个orders字段。单击右下角的JBossCMP-JDBC页,按如下填写,其它不变:
datasource = MSSQLDS
datasource-mapping = Hypersonic SQL
选择File->Save All保存项目。选择Project->“Make Project JbossDemo.jpx”编译项目。

五、建立Session Bean:在右边的空白处单击右键,选择Create EJB-> Session Bean, 将Bean Name改为GetData,右键单击代表这个Session Bean的矩形,选择Add->Method,按如下填写:
Method Name = GetOrdersByEmployeesID
Return Type = Vector
Input Parameters = Integer ID
Interface = Remote

六、编写代码:右键单击代表GetData的矩形,选择 View Bean Source。在开始处加入以下语句:
import java.util.*;
import javax.naming.*;
按如下填写GetOrdersByEmployeesID:
public Vector GetOrdersByEmployeesID(Integer ID)
{
Vector result = new Vector();
result.add(ID);
try
{
Context ctx = new InitialContext();
EmployeesHome home = (EmployeesHome)ctx.lookup("Employees");
Employees emp = home.findByPrimaryKey(ID);
Collection orders = emp.getOrders();
Iterator it = orders.iterator();
while(it.hasNext())
{
Orders order = (Orders)it.next();
result.add(order.getOrderID());
}
}
catch (Exception ex)
{
System.out.println("ShowOrdersByEmployeesID() error : " + ex.getMessage());
}
return result;
}

七、建立Servlet:选择File->New,在弹出的对话框中选择Web页中的Servlet图标,单击OK。在弹出的对话框中Class Name栏填写FormServlet,其它不变,单击Next,选中doGet()项,单击Next,此处的Name和URL pattern是有讲究的,它说明该servlet的web位置和web显示名称,其它不变,单击Finish。
按如下填写FormServlet.java的doGet()函数:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("<h1>Enter the Employees ID</h1>");
out.println("<strong>Enter Employees ID in the input fields below.</strong>");
out.println("<br><br>");
out.println("<form action=showordersservlet method=POST>");
out.println("Name<br>");
out.println("<input type=text name=EmployeeID value=\"\" size=20 maxlength=150>");
out.println("<br><br><br><br>");
out.print("<input type=submit value=Submit>");
out.println("</form>");
}

再次选择File->New,在弹出的对话框中选择Web页中的Servlet图标,单击OK。在弹出的对话框中Class Name栏填写ShowOrdersServlet,其它不变,单击Next,选中doPost()项,其它不变,单击Next,单击Next,单击Add Parameter,按如下填写:
Name = EmployeeID
Type = String
Desc = employee’s ID
Variable = employeeID
Default = 1

单击Next,单击Finish。
按如下填写ShowOrdersServlet.java的doPost()函数,别忘了在开始处加入以下语句:
import java.util.*;
import javax.naming.*;
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String employeesID = request.getParameter("EmployeeID");
if (employeesID == null)
{
employeesID = "1";
}
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
Vector orders = new Vector();
try
{
Context ctx = new InitialContext();
GetDataHome home = (GetDataHome)ctx.lookup("GetData");
GetData getData = home.create();
orders = getData.GetOrdersByEmployeesID(new Integer(employeesID));
}
catch (Exception ex)
{
System.out.println("GetOrdersServlet doPost() error :"+ex.getMessage());
}
Iterator it = orders.iterator();
out.println("<html>");
out.println("<head><title>ShowOrdersServlet</title></head>");
out.println("<body>");
out.println("<p>Orders with EmployeesID " + employeesID+ "</p>");
while(it.hasNext())
{
out.println("<p>OrderID = " + it.next().toString()+"</p>");
}
out.println("<h1>Order Count = " + orders.size()+"</h1>");
out.println("</body></html>");
}

八、建立EAR文件:右键单击左侧目录树中的的<Default WebApp>,选择Properties。将WebApp页的Name填写为JBossDemo,将Dependencies页中的所有项设置成Exclude All,单击OK。选择File->New,在弹出的对话框中选择Enterprise页中的EAR图标,单击OK。第一页不变,单击Next,选中JBossDemoModule,单击Next,单击Next,单击Next,选中JBossDemo,单击Finish。选择File->Save All保存项目。选择Project->“Rebuild Project JBossDemo.jpx”编译项目。

九、发布整个应用程序:右键单击左侧目录树中的的JBossDemo.eargrp,选择Deploy Options for “JBossDemo.ear” —>Deploy,发布应用程序。

十、测试应用程序:打开IE,在地址栏输入 http://localhost:8080/JBossDemo/formservlet,回车,在编辑框中输入3,单击“submit”即可。

4. 在jbuilder中使用vss进行团队开发

部分参考网上“CN-JAVA论坛->CASE工具->VSS与Jbuilder5/6进行代码控制的说明书”。

一、vss安装

如果你的电脑装有vss,但版本的不是vss6.0,那你可以卸装(服务器版本)或者清理注册表记录(客户端版本),开始->运行->regedit.exe,清除 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SourceSafe 中的所有记录。vss6.0是微软Visual Studio 6.0中的一员,你可以从中安装,作者安装的是vss6.0独立版,运行vss_ss/setup.exe,安装成功后重启电脑。

二、vss服务器端设置

运行“开始->程序->Microsoft Visual Studio 6.0-> Microsoft Visual SourceSafe-> Visual SourceSafe 6.0 Admin”,用户名Admin,密码默认为空,在“Visual SourceSafe Administrator”中,Users->Change Password,修改管理员密码,单击ok。vss6.0默认的数据库名是VSS,我们创建新的数据库Tools->Create Database…,选择该数据库放置的位置,例如D:\VSSDB,勾选New 6.0 database…,单击ok。Users->Open SourceSafe Database,双击vssdb,此时我们操作的是vssdb数据库,修改管理员密码并增加该数据库的使用用户,例如Users->Add User…,User name:cjw,Password:1234,单击ok。

选择tools->Options,在弹出窗口选择 Project Security 标签,选择 enable project security 复选框,单击ok。选择tools->Rights by Project,在弹出窗口设置用户的权限,设置完成之后,单击close。

三、在vss数据库中新建项目

运行“开始->程序->Microsoft Visual Studio 6.0-> Microsoft Visual SourceSafe-> Microsoft Visual SourceSafe 6.0 ”,选择File->Open SourceSafe Database…,双击我们刚建立的数据库。vss允许以任何的层次结构存储组织项目,在一个数据库中,可以创建多个项目,选择File->Create Project…,创建一个项目,例如daxt。

四、jbuilder中设置vss

打开Jbuilder,打开我们建立的JbossDemo工程,选择Team->Select Project VCS,选择Visual SourceSafe,单击ok。选择Team->Place Project into VSS,在弹出窗口中,填写“vss安装目录/win32”,单击next,填写刚建立数据源的目录路径,单击next,填写admin的用户名和密码,单击next,选择想置入vss中的目录或文件,单击next、next,填写数据源的位置(一般情况下,不填也可以),单击finish,等待jbuilder把项目加入vss中,根据对话框的内容知道操作是否成功。

五、项目开发人员获得VSS上的项目工程

vss6.0服务器安装后,项目开发人员运行vss服务器中“vss安装目录/NETSETUP.EXE”,根据提示安装。或者把vss服务器中“vss安装目录\win32\SSEXP.EXE”的快捷方式放到本机,直接运行即可。

以下部分作者没有非常详细测试过,请读者见谅,若有问题,请发email:peiwen_lin@163.net。

访问服务器共享出来的VSS数据源目录和jbuilder工程,把它们映射到自己的电脑上。运行Jbuilder,打开Demo工程。选择Team->Select Project VCS,选择Visual SourceSafe,单击ok。选择Team->Pull Project from VSS,选择映射的服务器上的VSS数据源目录,单击next,填写自己的用户名称和密码,单击next,选择数据源内合适的项目工程,单击next,选择一个空目录作为新项目的存放地点,单击finish。 根据对话框的内容知道操作是否成功。工程check in后,选择Team->Configure Visual SourceSaft,在弹出式窗口中可以重新设定vss的参数。

六、在jbuilder中如何使用vss

在jbuilder中打开JBossDemo工程。通过VSS进行代码控制,需要经常得到最新的项目代码文档,选择Team->Commit Browser,在弹出窗口中可以得到最新代码版本与本地版本之间的变更列表,单击Commit使本地的版本得到更新(注:可选择变更记录的action项选择对此变更的操作)。

修改文件前,要把文件check out出来,在jbuilder左边工程窗口中右击需要修改的文件,选择 Visual SourceSafe->Check out “…...”,文件修改完成后,用同样的方法把文件check in 进去,别人才能访问修改此文件。

添加文件,开发人员在工程内添加了文件之后,需要把它加入到 VSS,右击需要增加的文件,选择 Visual SourceSafe->Add…。   删除文件,把需要删除的文件chechout 出来,右击文件,选择Delete “…”。进行此操作时,可能出现VSS操作停顿的现象,解决方法:(1)激活Windows2000的任务管理窗口,把进程 ss.exe 干掉;(2)通过 VSS 的 Explorer 窗口把没有清除的文件删掉。

5. 结束语

作者刚刚涉足EJB,不免学识单薄,此篇文章若有误漏,请读者们多多包涵。写这篇文章的目的有两个:(1)配置过程遇到很多问题,所以要把正确的过程写出来,避免别人象我一样浪费时间;(2)调配服务器过程中,我从网上获得很多有用的信息,所以我要反馈信息,与别人共享信息资源。

 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号