在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下载,安装后,配置的环境变量如下:
1.CLASSPATH
路径:.;C:j2sdk1.4.0lib ools.jar;C:j2eelibj2ee.jar;
说明:jdk版本是1.4.0的,安装在c盘,读者可根据安装的目录自定
2.J2EE_HOME
路径:c:j2ee
说明:j2ee的目录
3.java_HOME
路径:C:j2sdk1.4.0
说明:jdk的目录
4.Path
路径:C:j2sdk1.4.0lib ools.jar;C:j2sdk1.4.0libdt.jar;C:j2sdk1.4.0in;C:j2sdk1.4.0jrein;说明:如果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:j2eein >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 FilesMicrosoft 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的libext目录下,重启动JBuilder。
准备工作完成后,我们开始配置工作:
一、 在jboss中配置sql2000的JDBC驱动
将msbase.jar, msutil.jar, mssqlserver.jar三个文件拷贝至Jboss的Serverdefaultlib目录下。将Jboss的docsexamplesjca目录下的mssql-service.xml, mssql-xa-service.xml文件拷贝至Jboss的serverdefaultdeploy目录下,修改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安装目录in un.bat”,打开IE,在地址栏输入 http://localhost:8080,出现一些错误信息,大意是没有web应用程序等,读者可以先在“jboss安装目录serverdefaultdeploy”中新建一个简单的web应用程序,或者等待后面用jbuilder中发布一个web应用,如果需要新建,步骤如下:
1、“jboss安装目录serverdefaultdeploy”中新建文件夹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.12in
Custom页:JBoss Installation Directory = F:jboss-3.0.4_tomcat-4.1.12 // < ??JBoss的安装目录
Tomcat 4X JBuilder Installation Directory = F:JBuilder7jakarta-tomcat-4.0.3 //< ??Tomcat的安装目录
JBoss Configuration to Use = default
单击OK。
3、Tools? >Configure Libraries, 在弹出的对话框中单击New按钮,在Name栏中填写JBoss Libs,单击Add按钮,加入JBoss目录下Serverdefaultlib目录下的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_MACHINESOFTWAREMicrosoftSourceSafe 中的所有记录。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安装目录win32SSEXP.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)调配服务器过程中,我从网上获得很多有用的信息,所以我要反馈信息,与别人共享信息资源。