使用Eclipse开发J2EE应用

从2D到3D地图开发:手把手教你用Cesium+Three.js实现卫星轨迹可视化(含代码片段) 本文详细介绍了如何结合Cesium与Three.js实现从2D到3D的卫星轨迹可视化。通过对比传统Web GIS框架的局限,阐述了Cesium处理三维地理与轨道数据、Three.js负责高级图形渲染的分工优势,并提供了从环境搭建、坐标同步到动态粒子效果实现的完整代码实战指南。 阅读详情
----集成Eclipse, Lomboz和JBoss

姜巍巍 (jiangww@lenovo.com)
联想集团软件设计中心的开发工程师
2003 年 6 月

Eclipse是一个非常优秀的集成开发环境,这个在IBM支持下的开放源码项目经过一段时期的发展完善,已经为广大Java开发者所熟悉。Eclipse的出现,为Java开发者提供了免费使用强大的Java IDE的机会,通过集成大量的plugin,Eclipse的功能可以不断扩展,以支持各种不同的应用。

Lomboz是一个免费的Eclipse plugin,它将很多Java应用服务器、J2EE组件和Web应用开发集成到Eclipse中,可以帮助Java开发者使用Eclipse建立、测试、部署J2EE应用。

JBoss是一个开放源码、功能强大的Java应用服务器,也是目前最受Java开发者欢迎的Java应用服务器,被Java World的编辑们评为2002年的最佳应用服务器。2003年到目前为止的下载量已经超过了一百五十万次。

一、下载、安装和配置

1. Eclipse的下载和安装

首先需要安装JDK,可以到Sun的网站上去下载最新版本并安装。

然后到www.eclipse.org去下载Eclipse的最新版本,目前的最新版本是2.1。下载以后解压到自己想要的目录中,比如D:/Eclipse,直接运行eclipse.exe,第一次运行的时候会自动寻找JDK并完成相应的配置,然后就进入了Eclipse的主界面。关于Eclipse的基本使用方法,developerWorks,Eclipse的网站以及Eclipse的随机文档上都有详细地介绍,这里不详细描述了。

2. Jboss的下载、安装

JBoss目前的最新版本是3.2.1,不过我觉得这个版本有一些问题,启动服务器的时候会有一些jar包找不到,导致WARN和ERROR的发生。所以我推荐下载3.0.7,也可以下载集成了Tomcat 4.1.24的JBoss 3.0.7版本。

下载后解压,我们假设JBOSS_HOME为JBoss的主目录,执行JBOSS_HOME/bin/run.bat,就启动了JBoss服务器。一般会在1分钟左右启动完毕。

3. Lomboz的下载、安装和配置

Lomboz目前的最新版本是2.1,我们假设Eclipse的主目录为ECLIPSE_HOME,下载以后将其解压到ECLIPSE_HOME/plugins文件夹下面,这样在这个文件夹下面就多了一个com.objectlearn.jdt.j2ee文件夹。

然后启动Eclipse, 会自动出现Customize Perspective的对话框,如果没有出现的话,也可以通过菜单"Window->Customize Perspective"来显示这个对话框,如下图所示:


展开File->New,选择所有与Lomboz相关的选项;

展开Window->Show View,选择Lomboz J2EE View;

展开Other,选择Lomboz Actions。

确认OK。

下面要进行Lomboz的配置:

首先,打开属性对话框,确保Java->New Project中的设置:


接着在Lomboz属性中,确保如下设置:


最后,设置服务器属性。

Lomboz预先定义了一些常用的Java服务器的设置,这些配置文件放在ECLIPSE_HOME/plugins/com.objectlearn.jdt.j2ee/servers 文件夹下面,你可以用文本编辑器手工修改(除非你所用的服务器不在Lomboz默认的服务器中,否则我不推荐你这么做),也可以在Eclipse的属性对话框中设置,设置的过程非常简单,如下图所示:


记得每次修改以后,都要点击Apply。

上图是Properties标签下的设置,Classpath标签下一般不需要做任何改动(注意:如果你没有听我文章开始部分的劝告,使用了JBoss3.2.0以上的版本,可能需要手工加入多了个jar包,这是体力活,有些麻烦。我不知道这是不是JBoss的问题,具体操作我在下面会提一下)。

通过以上三个步骤,就完成了Lomboz对J2EE开发的支持和JBoss的配置。你可以进入文章的第二部分"使用Eclipse开发Web应用"了。

注意事项:

a.如果服务器不在默认服务器之列;

在ECLIPSE_HOME/plugins/com.objectlearn.jdt.j2ee/servers 文件夹下新建一个后缀名为server的文件,然后根据已有的server文件为模版,用文本编辑器编辑server文件。建立了一个新的server文件以后,也可以在Lomboz的属性页中进行相应的设置。

b. 如果使用了JBoss3.2.0版本。

打开Window>Preferences>Lomboz>ServerDefinitions,选择你的服务器,然后选择classpath标签,将如下的jar包加入到server library中:

JBOSS_HOME/lib/concurrent.jar 
JBOSS_HOME /lib/boss-system.jar
JBOSS_HOME /server/default/lib/jboss.jar 
JBOSS_HOME /server/default/lib/jpl-pattern.jar 
JBOSS_HOME /server/default/lib/jpl-util.jar 
JBOSS_HOME /server/default/lib/jnpserver.jar 
JBOSS_HOME /server/default/lib/jboss-transaction.jar

我的JBoss320.server文件中的全部内容在本文的最后部分呈现。

二、使用Eclipse开发Web应用

首先,打开File->New->Lomboz J2EE Project,创建一个名为TestJ2EE的J2EE Project。

点击Next,默认各种设置,点击Next,进入下一个对话框,在Targeted Server中加入已经配置好的服务器,如下图:


在Web Modules和EJB Modules中分别新建Web模块和EJB模块,在本例中,我们分别命名为MyWeb和MyEJB,然后点击Finish。这样,一个J2EE项目的框架就自动生成了。

在MyWeb模块下面,自动生成了两个jsp文件:index.jsp和error.jsp,以及WEB-INF文件下面的配置文件。我们可以在此基础上面添加自己的jsp文件和servlet,然后build project。

在Eclipse的工具栏上点击Lomboz J2EE project outliner的按钮:


这样,在Eclipse上就出现了Lomboz J2EE View,如下图所示:


由于我事先已经部署了另一个Web服务器:Tomcat,所以在MyWeb这个模块上面出现了它所绑定的这两个服务器,JBoss 3.0 All 旁边的红色标记表示它是默认的服务器。可以通过右击Web模块选择更改默认的服务器,如下图:


选择好服务器以后,在Lomboz J2EE View中右键单击服务器,选择运行服务器,等服务器启动好以后,右键单击Web模块,选择Deploy Module,这样就完成了Web模块在服务器上的部署。打开IE浏览器,键入http://127.0.0.1:8080/MyWeb,就可以看到自己开发的Web应用了。

这里有一点需要说明,如果采用Tomcat作为Web服务器的话,如果Web模块需要重新部署,则须重新启动Tomcat服务器,JBoss则不需要这么做。

注意事项:

如果从Eclipse中启动JBoss服务器的时候,遇到了这个问题:


Error occurred during initialization of VM 
java/lang/NoClassDefFoundError: java/lang/Object

一般遇到这个问题,可能是由于JRE没有设置好,请在Eclipse中的Preference对话框中,展开Java->Installed JREs,查看JRE是否设置好了;然后打开所开发的项目属性对话框,查看Java Build Path的library中是否有JRE System Library,没有的话,点击Add Library,添加JRE System Library。


三、使用Eclipse开发EJB

在第二部分"使用Eclipse开发Web应用"中,我们已经在TestJ2EE这个J2EE项目中添加了一个名为MyEJB的EJB模块。下面我们通过Lomboz EJB Creation Wizard向MyEJB模块中添加一个Session Bean。

点击File->New->Lomboz EJB Creation Wizard,或者右击MyEJB模块,选择New->Lomboz EJB Creation Wizard,显示出如下对话框:


在com.dino.testj2ee.myejb这个包下面创建一个名为MyEJB的Stateless Session Bean。完成以后,在TestJ2EE项目的src文件夹下面,出现了一个名为MyEJBBean.java的文件,右击这个文件,选择New->Lomboz EJB Method Wizard,可以给这个EJB添加各种方法。我添加了一个helloWorld方法,返回一个String类型。如下图所示:


然后,需要把MyEJB这个Session Bean添加到MyEJB这个模块上面:右击MyEJB.java,选择Lomboz J2EE…->Add EJB to Module,选择MyEJB,OK。

右击MyEJB模块,选择LombozJ2EE…->Generate EJB Classes,这样就在ejbsrc目录下面自动生成了下面几个文件:

MyEJBHome.java
MyEJBRome.java
MyEJBLocalHome.java
MyEJBLocal.java
MyEJBSession.java (MyEJBSession extends MyEJBBean)
MyEJBUtil.java

Build project以后,自动将模块打包完毕。接着就可以按照部署Web模块的步骤来部署EJB模块了。

最后,我们建立一个应用程序来测试EJB。

通过File->New->Lomboz EJB Test Client Wizard打开一个对话框,按下图填写:


完成以后,在src目录下面生成了TestMyEJB.java,在其中的testBean方法中加入测试代码:


System.out.println(myBean.helloWorld());

如果目前JBoss服务器已经启动,而且MyEJB模块已经部署的话,执行TestMyEJB,就会在Console窗口上显示出:


hehe, I can deploy EJB by Eclipse!

四、总结

通过以上的介绍,我们了解到,Lomboz使Eclipse开发J2EE应用变得非常简便,而且Eclipse, Lomboz, JBoss这些工具都是免费和开放源码的项目,所以这样的组合对Java开发者来说更有吸引力。

对于开发复杂的J2EE应用来说,上面的介绍可能还不够全面,希望大家在做项目的过程中体会,再将总结出来的经验放到developerWorks上来分享。

参考资料:

  • www.eclipse.org Eclipse的官方网站;
  • www.jboss.org JBoss的官方网站;
  • www.objectlearn.com Lomboz的网站,上面有关于Lomboz的教程。
  • Eclipse in Action: A Guide for Web Developers, by David Gallardo, Ed Burnette and Robert McGovern, Manning Publications. 一本介绍使用Eclipse开发的好书。
  • JBoss 3.0: Quick Start Guide, by JBoss Group. 一本关于JBoss入门的好书。

关于作者

姜巍巍,是联想集团软件设计中心的开发工程师,热衷于J2EE和Web服务技术。闲暇时,喜欢阅读计算机书籍,并频繁光顾各个Java论坛;周末的晚上,一般会乖乖的在电视机前面观看意甲直播。地址:北京市上地信息产业基地开拓路7号先锋大厦 邮编:100085 。您可以通过E-mail: jiangww@lenovo.com 与他取得联系。

附录:JBoss320.server


<serverDefinition name="JBOSS 3.2" 
	ejbModules="true" webModules="true" earModules="true"> 
<property id="serverRootDirectory" label="Application Server Directory:" 
	type="directory" default="D:/jboss-3.2.0" /> 
<property id="serverAddress" label="Address:" 
	type="string" default="127.0.0.1" /> 
<property id="serverPort" label="Port:" 
	type="string" default="8080" /> 
<property id="classPathVariableName" label="Classpath Variable Name:" 
	type="string" default="JBOSS32" /> 
<property id="classPath" label="Classpath Variable:" 
	type="directory" default="D:/jboss-3.2.0" /> 
	
<serverHome>${serverRootDirectory}</serverHome> 
<webModulesDeployDirectory>${serverRootDirectory}/server/all/deploy</webModulesDeployDirectory> 
<ejbModulesDeployDirectory>${serverRootDirectory}/server/all/deploy</ejbModulesDeployDirectory> 
<earModulesDeployDirectory>${serverRootDirectory}/server/all/deploy</earModulesDeployDirectory> 
<jndiInitialContextFactory>org.jnp.interfaces.NamingContextFactory</jndiInitialContextFactory> 
<jndiProviderUrl>jnp://${serverAddress}:1099</jndiProviderUrl> 
<startClass>org.jboss.Main</startClass> 
<startWorkingDirectory>${serverRootDirectory}/bin</startWorkingDirectory> 
<startVmParameters></startVmParameters> 
<startProgramArguments>-c all</startProgramArguments> 
<stopClass>org.jboss.Shutdown</stopClass> 
<stopWorkingDirectory>${serverRootDirectory}/bin</stopWorkingDirectory> 
<stopVmParameters></stopVmParameters> 
<stopProgramArguments>${serverAddress} ${serverPort}</stopProgramArguments> 
<serverClassPath> 
<jar type="variable">JDK_TOOLS</jar> 
<jar type="variable">${classPathVariableName}/bin/run.jar</jar> 
<jar type="variable">${classPathVariableName}/bin/shutdown.jar</jar> 
<jar type="variable">${classPathVariableName}/client/jboss-j2ee.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/javax.servlet.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/commons-httpclient.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/concurrent.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/getopt.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/jboss-boot.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/jboss-common.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/jboss-jmx.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/jboss-system.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/jdom.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/log4j-boot.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/webdavlib.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/xercesImpl.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/xml-apis.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jnet.jar</jar> 
<jar type="variable">${classPathVariableName}/lib/gnu-regexp.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jboss.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jnpserver.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jpl-util.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jpl-pattern.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jsse.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jbossha.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jboss-jaas.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jts.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jboss-transaction.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/javagroups-2.0.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jmxri.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jmxtools.jar</jar> 
<jar type="variable">${classPathVariableName}/server/all/lib/jbossmx.jar</jar> 
</serverClassPath> 
<clientClassPath> 
<jar type="variable">${classPathVariableName}/client/jboss-j2ee.jar</jar> 
<jar type="variable">${classPathVariableName}/client/jnp-client.jar</jar> 
<jar type="variable">${classPathVariableName}/client/jboss-client.jar</jar> 
<jar type="variable">${classPathVariableName}/client/jboss-common-client.jar</jar> 
<jar type="variable">${classPathVariableName}/client/jbosssx-client.jar</jar> 
<jar type="variable">${classPathVariableName}/client/log4j.jar</jar> 
<jar type="variable">${classPathVariableName}/client/jnet.jar</jar> 
<jar type="variable">${classPathVariableName}/client/jaas.jar</jar> 
</clientClassPath> 
</serverDefinition>
ENVI无法打开Landsat8的头文件问题和解决 再次将txt文件拖入ENVI中,就会得到7个波段组合后的真彩色图像,而且辐射定标所需的参数信息都已经定义好了。按住CTRL+F,查找GROUP = LEVEL1_PROCESSING_RECORD。第一行GROUP = LANDSAT_METADATA_FILE。会查到两个包含的句子,把这两个中间的部分全部删掉。双击打开该xxx_MTL.txt的头文件。删除空行后,应该为如下图的样子。把LANDSAT改为L1。 阅读详情

相关推荐

使用Eclipse进行J2EE项目开发.pdf

Eclipse作为一个Java应用的IDE,使用非常方便, 但是对于J2EE开发支持还显得不够,本章将向大家 推荐一个Eclipse的插件来协助J2EE开发,这个插件名 称nqLomboz。Lomboz插件不仅仅可用于支持JSP语法 检查和调试,它更主要的作用是能够将很多Java应用服 务器(~[1Tomcat、JBOss、WebLogic等)、J2EE组件 和Web应用开发集成到Eclipse中,从而帮助Java开发使用EcHpse建立、测试、部署J2EE应用,以及EJB接口 文件和部署文件自动生成等功能。

java毕业设计——基于java+Eclipse+jsp的网上手机销售系统设计与实现(毕业论文+程序源码)——网上手机销售系统

大家好,今天给大家介绍基于java+Eclipse+jsp的网上手机销售系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。文章目录: 项目难度:中等难度 适用场景:相关题目的毕业设计 配套论文字数:28787个字67页 包含内容:整套源码+完整毕业论文+答辩PPT+辅导视频+运行截图 资源文件目录简图如下: 提示:以下为毕业论文的简略介绍,项目源码及完整毕业论文下载地址见文末。第1章 绪论 1.1 课题背景 省略作为全新的消费模式,网络购物给人们带来的改变不仅仅是购物场所,更多的在于改变了人们

m0_66238867的博客 1万+

基于变电站巡检机器人和综合管控平台的断路器状态识别方法.pdf

#资源达人分享计划#

eclipse j2ee 使用相关配置(一)

eclipse相关配置

qq_53732688的博客 771

使用Eclipse开发J2EE项目详解

 第 1 章        Eclipse 简介1.1     选择Eclipse开发J2EE的背景与意义1.1.1背景说明  Eclipse和其它的众多Java IDE一样,可以免费下载。但是,Eclipse背后有很大的优势,有IBM再撑腰,据传IBM花了4千万美元来开发这个IDE。Eclipse本身是万用工具平台。可以应用于JAVA,C#,JavaScript等多种语言的开发

日蚀 1万+

工欲善其事必先利其器——java开发工具

Java开发人员花费大量的时间埋头于Java代码,使用各种不同的IDE来开发Java代码,下面我将为大家介绍11个不同的IDE,这些IDE提供了多种功能。1.NetBeansNetBeans IDE支持所有Java应用类型(标准开箱即用式的开发。 NetBeans模块化的设计意味着它可以由第三方创建提升功能的插件来扩展NetBeansNetBeans IDE既可用于Java开发,也支持其他语言,特

qq_41214527的博客 665

解决js代码中加入alert()就成功执行,不加就不对的问题!

<br /><br />转众多网友意见<br />问题: <br />        我是做一个回车事件处理,翻页的那种,在一个页面上成功了,换到另外两个页面上就出错了。反正就是跳到1,如果加上alert(),就跳转成功。<br />可能情况:<br />         这种情况一般出现在 alert() 之后的某个代码需要页面元素进入一定的状态才能使用,加上 alert() 之后,相当于页面元素有足够的时间进入一定的状态了,如果确定你的代码没有问题,你可以把 alert() 之后的代码放到一个 setT

yangzhouzhou的专栏 1037

JS中alert的三种使用方式

JS中的alert,作用是在浏览器中弹出一个警告框。 而使用alert,有三种方式,不同的方式,所呈现的效果也不相同。 第一种方式:直接写在script标签中 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> &l...

qq_45240701的博客 10万+

js中加上alert()就成功执行,不加执行就不成功

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33785108的博客 571

解决js代码中加入alert就成功执行,不加就不对的问题,转自多篇博客

这是因为Ajax的异步处理的引起的 只需要把jquery中的$.ajaxSettings.async = false; 就可以了 默认为true; AJax可以通过两种方法访问服务器,即同步(脚本会停留并等待服务器发送回复然后再继续) 和 异步(脚本允许页面继续基进程并处理可能的回复) /* 【异步提交返回处理结果】 Ajax获取结果 */ function ajax_GetJsonData() ...

wqy3010的博客 879

html用户登陆成功怎么加alert,解决js代码中加入alert()就成功执行,不加就不对的问题!...

由于return false的做用域在each循环中,它只起到告终束当前循环的做用,至关于break,并无返回任何类型的值php转众多网友意见html问题:jquery我是作一个回车事件处理,翻页的那种,在一个页面上成功了,换到另外两个页面上就出错了。反正就是跳到1,若是加上alert(),就跳转成功。ajax可能状况: 这种状况通常出如今 alert() 以后的某个代码须要页面元素进入必定的状态...

weixin_34921054的博客 781

javascript中的alert,js的alert怎么用

b、在每个alert()括号内分别添加了一段文本信息,运行出现如下图所示的页面,当使用鼠标单击页面上的“确定”按钮后,出现第二个页面,再点击“确定”按钮后就关闭页面上的对话框。alert() 函数可以用来简单而明了地将alert()括号内的文本信息显示在对话框中,我们将它称为警示对话框,要显示的信息放置在括号内,该对话框上包含一个“确认”按钮,用户阅读完所显示的信息后,只需单击该按钮就可以关闭对话框。alert是java中的一个内置函数,用于显示带有一条指定消息和一个“确认”按钮的警告框;

chatgpt001的博客 1735

JavaScript alert 函数执行顺序问题

问题 alert()弹窗总数优先于其他的代码执行:代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <input id...

༺墨༒眉༻ 2131

十、Selenium执行JavaScript 和处理Alert弹窗、alert、window以及操作

一、执行JS脚本。 示例一,执行js脚本触发一个alert弹出框。 相关脚本代码如下: # coding=utf-8 import time from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait(6) driver.get("...

二哈欢乐多的博客 2523

html中js alert函数,javascript的alert是什么

alert是javascript中的一个内置函数,用于显示带有一条指定消息和一个“确认”按钮的警告框;语法“alert("文本")”。警告框经常用于确保用户可以得到某些信息;当警告框出现后,用户需要点击确定按钮才能继续进行操作。本教程操作环境:windows7系统、ECMAScript 5版、Dell G3电脑。alert() 函数用于显示带有一条指定消息和一个 “确认”按钮的警告框,无返回值。语...

weixin_32490593的博客 3968

解决js代码中加入alert就成功执行请求接口,不加就不执行的问题

**活动页面浏览量(PV)、浏览人数(UV)**/ function addpv(opttype) {url : '${ctx}/finedo/hallgift/addServiceRecord' , iswait : false , async : false , //默认开启true data : {} });关闭异步请求,async属性把默认的true 改为 false ,就可以请求数据。

zuo_kaizheng的博客 754
上一篇: 使用 Eclipse 帮助系统为项目编制文档
下一篇: 使用struts+spring+hibernate 组装web应用
yukikaze
博客等级 码龄23年 6粉丝 5原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值