初学J2EE

        工作2年了,一直用的是C/S进行开发,近来公司要转向B/S开发,不得不学习J2EE架构了,听前辈的讲述,学J2EE是很难学的,一般3个月能入门就已经不错了,根据我现在学习的进程前辈的话是很正确的,J2EE学的东西非常的多,什么Struts,Spring,EJB,Hibernate等等,我看一样东西多要一月半月的,公司也不出钱让我们去哪里培训一下,但也没办法,谁叫我们是劳动者啊,没得培训只能靠自己学了,不然的话可就要失业了。

学习J2EE也快2个月了,有点明白,但还是雾水的多,先前一直以为B/S也就是网页加服务器嘛,现在才认识到这样的理解太粗熟了,少说也要是三层结构啊,网页加服务器对于一些小的项目还是比较好的,开发快速,但对于大项目数据量一大,需求一多,以后就不好维护了,所以还是要分层的。八挂了这么多,转入正题。
 
先看一下一些用到的软件配置:
      JDK:1.5.0_06
       开发工具:Eclipse3.1.0( www.eclipse.org
插件:emf-sdo-runtime-2.1.1+ lomboz-3.1.0( http://download.forge.objectweb.org/lomboz/
       服务器: JBOSS4.0.4GA www.jboss.org
 
JAVA 环境变量设置
       JAVA_HOME=D:/JDK1.5.0
       PATH=%PATH%;%JAVA_HOME%/bin
       CLASSPATH=,;%JAVA_HOME%/lib/dt.jar; %JAVA_HOME%/lib/tools.jar
 
 
Eclipse 插件安装
两种方法
1、 直接将插件复制到plugins目录下即可
2、 使用Links方法
1) 在Eclipse的安装目录下建2个文件夹:一个用来存放插件,取名为Myplugins;另一个用来存放link取名为links。
2) 以Lomboz为例,将下载的zip包解压到myplugins下,解压路径为:d:/eclipse/myplugins/lomboz。(注:lomboz目录必须包含一个/eclipse目录,因eclipse会到指定的目录下查找eclipse/features和eclipse/plugins目录)
3) 在links目录中建一个link文件,可取名为Lomboz.link,在文件中添加如下内容:
Path=f:/eclipse/myplugins/lomboz(也可以使用相对路径:Path= /myplugins/lomboz)
 
 
Lomboz 注意的问题
1、 版本一定要跟eclipse的版本对应,否则不能使用
2、 Lomboz3.1.0好像不支持JSP编辑(不知道是什么原因,就是用不起来)
3、 配置
选择窗口->定制透视图将Lomboz显示出来
首选项->Lomboz中选择正确JRE的tools.jar
4、 在new-other-lomboz EJB Creation Wizard时,报“TypeName is not valid. Type parameters are only available if source level is 5.0.”错误,无法点击“Next”按纽
解决方法:修改eclipse-->preference-->java-->compiler-->JDK compliance 中的compiler compliance level 1.4-->5.0就可以了,但改在5.0后,必须在JRE5.0上运行,否则会报can’t find Main Class
 
JBOSS4.0.4 服务器配置
JBOSS4.0.4不在Lomboz的默认服务器之列,所以要新建一个配置信息,然后将这些配置放在Lomboz目录下的” com.objectlearn.jdt.j2ee_3.0.1->server”的文件夹下,
jboss404.server内容如下:
<serverDefinition
 name="JBOSS 4.0.4"
 ejbModules="true"
 webModules="true"
 earModules="true">
<property id="serverRootDirectory"
label="Application Server Directory:"
type="directory"
default="E:/JavaTool/jboss-4.0.4" />
<property id="serverAddress"
label="Address:"
type="string"
default="127.0.0.1" />
<property id="serverPort"
label="Port:"
type="string"
default="8080" />
<property id="serverConfig"
label="Server Configuration (minimal/default/all):"
type="string"
default="default" />
<property id="classPathVariableName"
label="Classpath Variable Name:"
type="string"
default="JBOSS404" />
<property id="classPath"
label="Classpath Variable:"
type="directory"
default="E:/JavaTool/jboss-4.0.4" />
<serverHome>${serverRootDirectory}</serverHome>
<webModulesDeployDirectory>${serverRootDirectory}/server/${serverConfig}/deploy</webModulesDeployDirectory>
<ejbModulesDeployDirectory>${serverRootDirectory}/server/${serverConfig}/deploy</ejbModulesDeployDirectory>
<earModulesDeployDirectory>${serverRootDirectory}/server/${serverConfig}/deploy</earModulesDeployDirectory>
<jndiInitialContextFactory>org.jnp.interfaces.NamingContextFactory</jndiInitialContextFactory>
<jndiProviderUrl>jnp://${serverAddress}:1099</jndiProviderUrl>
<startClass>org.jboss.Main</startClass>
<startWorkingDirectory>${serverRootDirectory}/bin</startWorkingDirectory>
<startVmParameters>-Dprogram.name=run.bat -Djava.endorsed.dirs=${serverRootDirectory}/lib/endorsed</startVmParameters>
<startProgramArguments>-c ${serverConfig}</startProgramArguments>
<stopClass>org.jboss.Shutdown</stopClass>
<stopWorkingDirectory>${serverRootDirectory}/bin</stopWorkingDirectory>
<stopVmParameters>-cp ${ClassPathVariableName}/bin/shutdown.jar -Djboss.boot.loader.name=shutdown.bat</stopVmParameters>
<stopProgramArguments>-S</stopProgramArguments>
<serverClassPath>
<jar type="variable">JDK_TOOLS</jar>
<jar type="variable">${classPathVariableName}/bin/run.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/jbossall-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}/server/default/lib/jnpserver.jar</jar>
</clientClassPath>
<projectClassPath>
<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/${serverConfig}/lib/javax.servlet.jar</jar>
<jar type="variable">${classPathVariableName}/lib/jboss-system.jar</jar>
<jar type="variable">${classPathVariableName}/lib/concurrent.jar</jar>
<jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jboss.jar</jar>
<jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jnpserver.jar</jar>
<jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jpl-pattern.jar</jar>
<jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jpl-util.jar</jar>
<jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/jboss-transaction.jar</jar>
<jar type="variable">${classPathVariableName}/server/${serverConfig}/lib/bcel.jar</jar>
</projectClassPath>
<adminTool>
<web><deploy /><undeploy />
</web>
<ejb><deploy /><undeploy />
</ejb>
<ear><deploy /><undeploy />
           <webModule><deploy /><undeploy />
           </webModule>
           <ejbModule><deploy /><undeploy />
           </ejbModule>
</ear>
</adminTool>
<adminToolPath>
</adminToolPath>
</serverDefinition>
 
出现的问题
错误一    启动时出现以下错误:
!ENTRY org.eclipse.osgi 2006-08-08 22:31:37.371
!MESSAGE Startup error
!STACK 1
java.lang.IllegalStateException: Bundle initial@reference:file:plugins/org.eclipse.update.configurator_3.1.0.jar/ [2] is not active.
         at org.eclipse.core.runtime.adaptor.EclipseStarter.ensureBundlesActive(EclipseStarter.java:410)
         at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:297)
         at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:159)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:324)
         at org.eclipse.core.launcher.Main.invokeFramework(Main.java:334)
         at org.eclipse.core.launcher.Main.basicRun(Main.java:278)
         at org.eclipse.core.launcher.Main.run(Main.java:973)
         at org.eclipse.core.launcher.Main.main(Main.java:948)
 
原因:可能有多个JRE产生的,Eclipse不能识别多个
解决方法:重新安装JDK
 
错误二          JDK 版本问题
12:39:06,709 WARN [verifier] EJB spec violation:
Bean   : Datawork
Section: 22.2
Warning: The Bean Provider must specify the fully-qualified name of the Java class that implements the enterprise bean's business methods in the <ejb-class> element.
Info   : Class not found on 'gis.gx.data.DataworkSession': Unexpected error during load of: gis.gx.data.DataworkSession, msg=gis/gx/data/DataworkSession (Unsupported major.minor version 49.0)
12:39:06,709 ERROR [MainDeployer] Could not create deployment: file:/E:/JavaTool/jboss-4.0.4/server/default/deploy/gisbean.jar
org.jboss.deployment.DeploymentException: Verification of Enterprise Beans failed, see above for error messages.
很奇怪的问题,在 Eclipse 中能运行 JBOSS 服务器,但直接用 JBOSS 启动却产生以上错误,后来看到 JBOSS 中的 JDK 为:
Java VM: Java HotSpot(TM) Client VM 1.4.1_02-b06,Sun Microsystems Inc.
而在 Eclipse 中却为:
Java VM: Java HotSpot(TM) Client VM 1.5.0_06-b05 ,Sun Microsystems Inc.
问题找到,修改环境变量里的 JAVA_HOME 设为指向 1.5 的,重启 JBOSS ,成功
 
错误三 布署后的问题
新建的 EJB 要访问数据库,用到 classes12.jar 文件,但打包的时候没有将这个文件打包进去,运行的时候总报以下错误:
java.lang.ClassNotFoundException : No ClassLoaders found for: oracle.jdbc.driver.OracleDriver
classes12.jar 所在的目录加 CLASSPATH 里,还是同样报错
直接复制到 JBOSS 中的 server/default/deploy ,运行问题解决,发现再建一个目录 Mylib 将额外的文件放到这里
 
错误四   Lomboz 生成问题
23:12:31,283 WARN [verifier] EJB spec violation:
Bean   : Test
Section: 7.10.3
Warning: A Session bean must define at least one ejbCreate method.
 
23:12:31,293 ERROR [MainDeployer] Could not create deployment: file:/E:/JavaTool/jboss-4.0.4/server/default/deploy/mybean.jar
org.jboss.deployment.DeploymentException: Verification of Enterprise Beans failed, see above for error messages.
。。。。。。
配置: Eclipse3.1.0+JBOSS4.0.4GA+Lomboz3.1.0+Eclipse 编程技术与实例 ( 叶达峰 )
现象:完全按照书上的做,使用lomboz,生成的JAR,运行JBOSS就报以上的错误,在网上找了好久就是没找到是什么原因,郁闷到了极点,初学J2EE就遇到如此的问题,幼小的心灵受到了严重的打击。
分析:开始以为是JBOSS的问题,就下载不同的版本来试,一直从4.0.4到3.2.7,还是不行,真想逛扁这本书的作者,写出来的东西不能用,搞什么啊。后来找出该书的配套光盘源代码用jar打包,放到JBOSS后,竟然能起来,对比源代码,多一样的啊,怎么我写的这个就不行,最后发现源代码多了一大串注释,一看注释跟配置有关,马上加上,运行,还真起来,真不明白,这段注释会有这么大的作用,竟然在这注释上搞了我一个多星期,作者怎么搞得这多不说清楚,郁闷。       
 
                                                                                                                2006-8-17
 
/**
 *
 * <!-- begin-user-doc --> A generated session bean <!-- end-user-doc --> *
 <!-- lomboz.beginDefinition -->
 <?xml version="1.0" encoding="UTF-8"?>
 <lomboz:EJB xmlns:j2ee="http://java.sun.com/xml/ns/j2ee" xmlns:lomboz="http://lomboz.objectlearn.com/xml/lomboz">
 <lomboz:session>
 <lomboz:sessionEjb>
 <j2ee:display-name>Test</j2ee:display-name>
 <j2ee:ejb-name>Test</j2ee:ejb-name>
 <j2ee:ejb-class>com.test.ejb.TestBean</j2ee:ejb-class>
 <j2ee:session-type>Stateless</j2ee:session-type>
 <j2ee:transaction-type>Container</j2ee:transaction-type>
 </lomboz:sessionEjb>
 </lomboz:session>
 </lomboz:EJB>
 <!-- lomboz.endDefinition -->
 *
 * <!-- begin-xdoclet-definition -->
 * @ejb.bean name="Test"  
 *           jndi-name="Test"
 *           type="Stateless"
 *           transaction-type="Container"
 *
 *--
 * This is needed for JOnAS.
 * If you are not using JOnAS you can safely remove the tags below.
 * @jonas.bean ejb-name="Test"
 *             jndi-name="Test"
 *
 *--
 * <!-- end-xdoclet-definition -->
 * @generated
 */
 
 
错误五   XML 解析问题
将以前JB做的Aplication移到eclipse下出现下面的错误信息:
javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.SAX
ParserFactoryImpl could not be instantiated: java.lang.NullPointerException
 
网上找到答案:还需要把xercesImpl.jar复制到D:/jdk1.5.0_01/jre/lib/endorsed下面(没有这个目录就创建这个目录)
但加了 xercesImpl.jar 后启动eclipse又出现以下错误:
最后解决方法:将 xercesImpl.jar 加入到下图中,OK
 
结束语
       平生不大会写文章,第一次写自己的BLOG,感觉很好,自己记录的东西就是不一样,以后我会多写这样的文章,也希望对大家能有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值