如何搭建J2EE开发环境
作者:翁驰原
Borland公司推出JBuilder 7后,引起了很多Java爱好者的关注。本文就是笔者根据自己经验编写的在JBuilder7下配置Weblogic Server7.0。希望通过此文,大家能顺利地搭建一个比较普遍流行的J2EE环境,并学会开发基本的EJB程序。
创建一个Weblogic Server域
本文假设已经正确安装了JBuilder7和Weblogic Server7.0。值得注意的是,在Weblogic Server 7.0安装的时候要设置一个Server,你可以在安装的时候设置,也可以在安装完后通过开始菜单→程序→BEA Weblogic Platform7.0→Configuration Wizard来设置。设置的时候不要选择WLS Examples,而要选择WLS Domain(如图1)。因为WLS Examples设置了一个范例域,其中有一些范例程序、连接池设置和数据源,运行的时候会出现连接池设置不对的问题。WLS Domain可以创建一个空的域,默认域名是mydomain。具体创建域的过程如下:首先选择默认的Single Server,接下来选择默认域目录是H:/bea/user_projects/,然后单击Next按钮,填写完用户名和密码后,再单击Next,最后创建一个域。
图1 选择Server界面
在JBuilder 7下配置Weblogic Server 7.0
1.运行JBuilder 7后,选择Tools→Configure Servers,弹出的窗口如图2所示。然后进行如下设置:在左边选择Weblogic Server 6.x+,在右边选择面板上的Enable Server选项,然后在Home directory里写上你的Weblogic Home目录为H:/bea/weblogic700/server(我这里安装在H盘上,如果你装在别的盘请自行更改)。同时在Class标签下新增四个在JBuilder根目录下的lib目录下的.jar文件,分别为jaxrpc.jar、jas.jar、jdsremote.jar和jdsserver.jar,并按照如图2的顺序按Move Up按钮将jaxrpc.jar移到第一个。这些.jar文件在开发Entity Bean和使用JdataStore数据库时起作用。
图2 配置Server界面1
选择图3的Custom 标签,首先设置JDK Installation Directory为H:/bea/jdk131_02,设置BEA Home Directory为H:/bea,设置DomainDirectory为H:/bea/user_projects/mydomain。然后填写用户名和密码,用户名和密码就是在设置Weblogic Server域时设置的用户名和密码。最后填写Domain Name、Server Name分别为mydomain、myserver后,单击OK退出。
图3 配置Server界面2
2.选择Tools->Enterprise Setup,单击CORBA面板上的New,弹出如图4所示的窗口。配置如下:在Name for this configuration里填写WelLogic 7.0、在Path for ORB Tools里填写h:/bea/weblogic700/server、在Library for projects里选择WebLogic 6.x+Deploy、在IDL compiler command里填写idlj.exe,在Commnad option for output directory里填写任意一个目录,比如:h:/temp,单击OK退出。
图4 设置CORBA界面
3.选择Project->Default Project properties,然后选择Server标签,在Single services for all service in project下拉列表中选择WebLogic Application Server 6.x+,单击OK退出,配置完毕。这里有两个选项Single services for all service in project和Modular Services provided by different servers,第一个表示在项目里用一个服务,后面的表示在项目里用不同的服务,比如JSP和Servlet可以用Tomcat的,而ELB是用Weblogic的。这里选择在项目里用一个服务。
在配置好的环境下开发一个Session Beans
1. 创建一个项目。选择File?>New,然后选择Project面板下的 Project项,在Name中填入TestSes,在Directory里填写项目要放的位置,其它的默认,单击Finish。
2. 创建一个Session Bean模块。选择File?>New,然后选择Enterprise面板下的EJB Module,选择OK。在出现的窗口后,在Name里填写TestSesMod,在Version里选择EJB 2.0 compliant。
图5 设置EJB界面
图6 创建EJB方法界面
3. 创建一个Session Bean。在JBuilder里,EJB可以可视化的创建。如图5所示,在右边的空面板里点击鼠标右键,选择Create EJB,然后在它的子菜单里选择Session Bean,这样就创建了一个可视化的Session Bean。在Bean的设置面板中可以改变Bean的名字,这里的Bean Name是TestSes。现在开始创建一个方法,步骤如下:在TestSes上点击鼠标右键,选择Add后选择Method(如图6),然后在Name里填getName、Return type填String、Interfaces里选Remote,再在左边点击testses旁边的+号,点开+号后在出现的Java文件里双击TestSesBean.java,最后在getName方法里加入如下代码:
Public String getName(){
return "Testing Successful";
}
4. 创建配置Jar文件。要运行Session Bean,首先要编译这个项目。选择Project下的Make Project TestSes.jpx,编译后可以看到TestSesBean.java旁边多了个“+”号,点击这个“+”号可以看到几个由容器产生的文件。在左边的面板里也可以看到TestSesMod.jar文件,双击它可以看到部署描述(如图7)。
图7 创建配置Jar文件
5. 创建运行期的设置。JBuilder允许用户为不同的应用程序创建运行期设置。设置如下:选择Run ?>Configuration Name,此时出来的Project Properties窗口里Run面板是默认选择上的。单击New来创建一个新的运行期设置,在弹出来的Runtime Properties面版中单击Server标签,然后在Configuration name里输入一个设置名,这里输入Server(如图8),随后单击OK,再单击OK退出。
图8 设置EJB界面
6. 在JBuilder里运行Weblogic。运行如下:选择菜单Run下的Run Project运行Weblogic Server。
7.部署EJB到Webloigc Server。设置如下:右击TestSesMod.jar,在弹出的面板里选择Deploy option of TestSesMod.jar,再选择Deploy(如图9)。
图9 部署EJB到Weblogic Server界面
8.远程部署。这里简单地介绍一下在远程的Weblogic Server上如何部署应用。即使是远程部署,在本机上也需要装有应用服务器。如果是在Weblogic Server7.0上部署的,在JBuilder里选择Tools?>Enterprise Deployment,在弹出的窗口里修改Admin url为远程服务器的主机名和端口号,然后设置正确的用户名和密码。
9. 创建一个客户端测试程序测试Session Bean。创建步骤如下:在JBuilder里选择File?>New,然后选择Enterprise标签里的EJB Test Client,点击OK。在弹出来窗口的Name里输入TestSesTestClient,单击OK结束。
在文件的main()方法里加入如下代码:
public static void main(String[] args) {
TestSesTestClient client = new TestSesTestClient();
try{
client.create();
String name=client.getName();
System.out.println ("Name form the Test client="+name);
}
catch (Exception ex){}
}
10.运行客户端测试程序。测试如下:先为它加一个运行期设置。在Run?>Configuration里选择New,在弹出的窗口里选择Run下的Application,同时在Configuration name里输入Client,然后在Main里选旁边的按钮,在弹出的窗口里选择Browse标签下的testses下的TestSesTestClient,一路OK完成。右击TestSesTestClient.java,单击Run Using Client后,运行Client程序。运行成功后见图10所示,Client得到了调用了Session Bean的方法,返回了Testing Successful。
图10 运行客户端测试程序界面
常见错误解答
1.WebLogic Server cannot start: config.xml not found。
(1)错误代码描述:
<Info> <Management> <140013> <C:/bea/user_projects/./config.xml not found>
C:/bea/user_projects/./config.xml not found
Since no config.xml was found, the fileRealm.properties file will not be used.
Would you like the server to create a default configuration and boot? (y/n):
(2)问题发生时机
在JBuilder上运行Weblogic Server时,在Weblogic 6.x+ http:7001页上。
(3)产生原因:
Weblogic域目录没有正确设置。
(4)解决方法:
选择Tools??>Configure Servers,左边选择Weblogic Server 6.x+,右边选择Custom标签,同时检查域目录是否正确。如:h:/bea/user_projects/mydomain。
2.Authentication for user <username> denied。
(1)错误代码描述:
<Critical> <WebLogicServer> <000364> <Server failed during initialization.
Exception:java.lang.SecurityException: Authentication for user username denied
java.lang.SecurityException: Authentication for user username denied.
(2)问题发生时机:
在JBuilder上运行Weblogic Server时,在Weblogic 6.x+ http:7001页上。
(3)产生原因:
在JBuilder里用户名、密码填写错误。
(4)解决方法:
选择Tools→Configure Servers,左边选择Weblogic Server 6.x+,右边选择Custom标签,检查用户名和密码是否正确。
3.Deployment of Web application failed;
(1)错误代码描述:
Exception:weblogic.management. ApplicationException: Prepare failed. Task Id = 0
Module: TestWebApp Error: weblogic.j2ee.DeploymentException: Cannot deploy
ServletContext(id=2545674,name=TestWebApp,context-path=/TestWebApp) from
C:/bea/user_projects/mydomain/ myserver/upload/TestWebApp/
TestWebApp.war on myserver
because there is already a webapp named
ServletContext(id=5684736,name=TestWeb App,contextpath=/
TestWebApp) loaded from C:/Documents and
Settings/spati/jbproject/ TestWebApp/TestWebApp, which is using the context path
/TestWebApp.
(2)问题发生时机:
部署WAR文件的时候。
(3)产生原因:
可能是已经在Weblogic上部署了一个相同名称的应用了。
(4)解决方法:
选择Project??>Project Properties,选择Server标签,在Services列表里先选上jsp/servlet,把右边的Map project webapps at runtime的勾去掉,就可以安全的部署了。如果问题还存在的话,就只有重新建一个Web应用程序,然后把程序都拷贝到新的应用上再部署了。
4. NameNotFound Exception from test client。
(1)错误代码描述如下:
javax.naming.NameNot FoundException: Unable to resolve 'TestSes' Resolved:
''Unresolved:'TestSes'; remaining name 'TestSes'
(2)问题发生时机如下:
部署完EJB JAR文件后,运行TestClient的时候。
(3)产生原因如下:
TestClient不能找到EJB的JNDI名。
(4)解决方法如下:
打开Weblogic Server Console检查部署是否有错,在Deployments??>EJB里找到EJB的模块名。检查名称后点击右边窗口的Deploy,如果JAR部署正确,右边窗口的Deployment状态是True。
5.test client run failed。
(1)错误代码描述如下:
javax.naming.Communication Exception. Root exception is
java.net.ConnectException:
t3://localhost:7001: Destination unreachable; nested exception is:
java.net.ConnectException: Connection refused: connect;
No available router to destination
(2)问题发生时机如下:
部署完EJB JAR文件后,运行TestClient的时候。
(3)产生原因如下:
TestClient和Weblogic通信出现问题。
(4)解决方法如下:
如果你的Weblogic是在别的主机上或者端口号改变了,请在TestSesTestClient.java里修改原来的有关主机名或端口的代码。
到现在为止,你已经可以搭建一个J2EE环境,并且基本上了解EJB在JBuilder上的实现了。那么就赶快上机试试吧!