如何有效的整合Struts+Hibernate+EJB应用

bluesky35 2004-11-09 05:21:19
J2EE应用已经从1.3跨越到了1.4,相信1.5也离我们不远了(JDK1.5也出来了).其中有许多的结构都是大家所崇拜的.
经典的MVC,代表结构是Struts--它成功的将业务层,控制层与表示层分开,使用Struts的系统最大优点是分工明确,修改简单,重用性强.
Hibernate--使得数据库操作再也不用那么复杂,所有的自动建表,读取,更新,写入操作都使得开发越来越便捷.
EJB--EJB3.0向我们展示了一整套优化的解决方案,比起EJB2.0来说,3.0可谓改进了不少,分布式应用一直是J2EE的瓶颈,采用了EJB的系统不但有着很高的安全性(置于防火墙后),而且使得不同地点,不同系统的通讯变得方便,简洁.
但是最近看到许多朋友都将Struts,Hibernate以及EJB很笼统的放在一起,有点生搬硬套的味道,并没有将他们用在最合适的地方,所以特地开贴和大家讨论一下如何将Struts,Hibernate以及EJB整合在一起,使他们发挥各自最大的作用,在什么地方,什么时候,他们的整合将得到最大的发挥.
大家可以就做过的某些例子展开,也可以只说明一下自己的想法和见解.
...全文
367 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
bestdelphier 2004-11-15
  • 打赏
  • 举报
回复
mark一个
javaGirlOrBoy 2004-11-15
  • 打赏
  • 举报
回复
我做过struts+sessionbean+entityBean 感觉并发数据量大的时候速度有点慢!
zcjl 2004-11-14
  • 打赏
  • 举报
回复
hibernate for Eclipse插件:tanghan
梦想家起飞 2004-11-14
  • 打赏
  • 举报
回复
Struts+SessionBean+EntityBean的方式作过尝试,但只是自己瞎倒腾,没有实际项目可以练手。

-_-!!

楼主的方案里提到的EJB应该是指SessionBean和MDBean吧?俺也想尝试一下,正在学习中,呵呵。。上半年看了一下Hibernate,感觉比做EntityBean还麻烦,当然这里指的是用JBuilder做EntityBean,用UltraEdit做Hibernate,如果Hibernate什么时候也得到JBuilder或Eclipse之类IDE工具的鼎力支持就好了。。
zawx 2004-11-14
  • 打赏
  • 举报
回复
struts作为表现层还是相当不错的。
IceCraft 2004-11-14
  • 打赏
  • 举报
回复
tanghan不能用在3.0上:)
zzsky 2004-11-13
  • 打赏
  • 举报
回复
哎,我也觉得struts太麻烦了,要写一大堆的代码,不过hibernate真的不错,比起Entity bean效率真的是高多了。
pbMaster 2004-11-13
  • 打赏
  • 举报
回复
我最近也在看这些方面的内容。
暂定的模式是:

第一层 Spring(MVC)+Struts(tags&validator)
第二层 Session Bean
第三层 DAO
第四层 CMP Entity Bean(简单操作)+Hibernate(复杂操作)
骑行的咖啡豆 2004-11-13
  • 打赏
  • 举报
回复
我想学习DAO ,但是找不到好的资料,那位仁兄如果知道的话,给提供几个号网站,小弟在此次谢过了。
我想在正学着struts,但是在jb中,struts的struts-config.xml中一配置数剧源,就抛异常,如果删掉,就没有问题,我不知道是什么原因。麻烦高手指点一下迷津。异常如下:


F:\JBuilderX\jdk1.4\bin\javaw -classpath "F:\JBuilderX\thirdparty\jakarta-tomcat-4.0.6-LE-jdk14\bin\bootstrap.jar;F:\JBuilderX\jdk1.4\lib\tools.jar" -Dcatalina.home="F:/JBuilderX/thirdparty/jakarta-tomcat-4.0.6-LE-jdk14" org.apache.catalina.startup.Bootstrap -config E:\project\StrutsTest\Tomcat\conf\server8083.xml start
HttpConnector Opening server socket on all host IP addresses

Starting service Tomcat-Standalone

Apache Tomcat/4.0.6

WebappLoader[]: Deploying class repositories to work directory E:\project\StrutsTest\Tomcat\work

WebappLoader[]: Deploy JAR /WEB-INF/lib/commons-beanutils.jar to E:\project\StrutsTest\webtest\WEB-INF\lib\commons-beanutils.jar

WebappLoader[]: Deploy JAR /WEB-INF/lib/commons-collections.jar to E:\project\StrutsTest\webtest\WEB-INF\lib\commons-collections.jar

WebappLoader[]: Deploy JAR /WEB-INF/lib/commons-dbcp-1.2.1.jar to E:\project\StrutsTest\webtest\WEB-INF\lib\commons-dbcp-1.2.1.jar

WebappLoader[]: Deploy JAR /WEB-INF/lib/commons-digester.jar to E:\project\StrutsTest\webtest\WEB-INF\lib\commons-digester.jar

WebappLoader[]: Deploy JAR /WEB-INF/lib/commons-fileupload.jar to E:\project\StrutsTest\webtest\WEB-INF\lib\commons-fileupload.jar

WebappLoader[]: Deploy JAR /WEB-INF/lib/commons-lang.jar to E:\project\StrutsTest\webtest\WEB-INF\lib\commons-lang.jar

WebappLoader[]: Deploy JAR /WEB-INF/lib/commons-logging.jar to E:\project\StrutsTest\webtest\WEB-INF\lib\commons-logging.jar

WebappLoader[]: Deploy JAR /WEB-INF/lib/commons-pool-1.2.jar to E:\project\StrutsTest\webtest\WEB-INF\lib\commons-pool-1.2.jar

WebappLoader[]: Deploy JAR /WEB-INF/lib/commons-validator.jar to E:\project\StrutsTest\webtest\WEB-INF\lib\commons-validator.jar

WebappLoader[]: Deploy JAR /WEB-INF/lib/jakarta-oro.jar to E:\project\StrutsTest\webtest\WEB-INF\lib\jakarta-oro.jar

WebappLoader[]: Deploy JAR /WEB-INF/lib/msbase.jar to E:\project\StrutsTest\webtest\WEB-INF\lib\msbase.jar

WebappLoader[]: Deploy JAR /WEB-INF/lib/mssqlserver.jar to E:\project\StrutsTest\webtest\WEB-INF\lib\mssqlserver.jar

WebappLoader[]: Deploy JAR /WEB-INF/lib/msutil.jar to E:\project\StrutsTest\webtest\WEB-INF\lib\msutil.jar

WebappLoader[]: Deploy JAR /WEB-INF/lib/struts.jar to E:\project\StrutsTest\webtest\WEB-INF\lib\struts.jar

WebappLoader[]: Reloading checks are enabled for this Context

StandardManager[]: Seeding random number generator class java.security.SecureRandom

StandardManager[]: Seeding of random number generator has been completed

ContextConfig[]: Added certificates -> request attribute Valve

StandardWrapper[:default]: Loading container servlet default

2002-11-13 14:11:00 org.apache.struts.util.PropertyMessageResources <init>

信息: Initializing, config='org.apache.struts.util.LocalStrings', returnNull=true

2002-11-13 14:11:00 org.apache.struts.util.PropertyMessageResources <init>

信息: Initializing, config='org.apache.struts.action.ActionResources', returnNull=true

2002-11-13 14:11:01 org.apache.struts.util.PropertyMessageResources <init>

信息: Initializing, config='ApplicationResources', returnNull=true

2002-11-13 14:11:01 org.apache.struts.action.ActionServlet initModuleDataSources

严重: Initializing application data source PUBS_KEY

java.lang.ClassCastException

at org.apache.struts.action.ActionServlet.initModuleDataSources(ActionServlet.java:1081)

at org.apache.struts.action.ActionServlet.init(ActionServlet.java:472)

at javax.servlet.GenericServlet.init(GenericServlet.java:256)

at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:918)

at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:810)

at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3279)

at org.apache.catalina.core.StandardContext.start(StandardContext.java:3421)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)

at org.apache.catalina.core.StandardHost.start(StandardHost.java:638)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)

at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:343)

at org.apache.catalina.core.StandardService.start(StandardService.java:388)

at org.apache.catalina.core.StandardServer.start(StandardServer.java:506)

at org.apache.catalina.startup.Catalina.start(Catalina.java:781)

at org.apache.catalina.startup.Catalina.execute(Catalina.java:681)

at org.apache.catalina.startup.Catalina.process(Catalina.java:179)

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.apache.catalina.startup.Bootstrap.main(Bootstrap.java:243)

StandardWrapper[:action]: Marking servlet action as unavailable

StandardContext[]: Servlet threw load() exception: javax.servlet.UnavailableException: Initializing application data source PUBS_KEY

javax.servlet.UnavailableException: Initializing application data source PUBS_KEY

at org.apache.struts.action.ActionServlet.initModuleDataSources(ActionServlet.java:1091)

at org.apache.struts.action.ActionServlet.init(ActionServlet.java:472)

at javax.servlet.GenericServlet.init(GenericServlet.java:256)

at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:918)

at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:810)

at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3279)

at org.apache.catalina.core.StandardContext.start(StandardContext.java:3421)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)

at org.apache.catalina.core.StandardHost.start(StandardHost.java:638)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)

at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:343)

at org.apache.catalina.core.StandardService.start(StandardService.java:388)

at org.apache.catalina.core.StandardServer.start(StandardServer.java:506)

at org.apache.catalina.startup.Catalina.start(Catalina.java:781)

at org.apache.catalina.startup.Catalina.execute(Catalina.java:681)

at org.apache.catalina.startup.Catalina.process(Catalina.java:179)

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.apache.catalina.startup.Bootstrap.main(Bootstrap.java:243)

StandardWrapper[:invoker]: Loading container servlet invoker

HttpConnector[8083] Starting background thread

zcjl 2004-11-12
  • 打赏
  • 举报
回复
没用过EJB,也不知道session bean到底有什么好处
也许用hibernate替换entity bean是一种好的思路
但是看到更多的是完全摒弃ejb,用struts(webwork/tapestry)+spring+DAO模式+hibernate的组合
唉,自身没有相关的项目经验就是不爽
说再多也是拾人牙慧,没有自己的心得
zcjl 2004-11-12
  • 打赏
  • 举报
回复
看过,却没有实际经验
谈不出什么感想来
:(
discolt 2004-11-12
  • 打赏
  • 举报
回复
现在开发Struts觉得有点麻烦了,配置太多,象WEB层的重量级,不知是否也有人有同感
niyboy 2004-11-12
  • 打赏
  • 举报
回复
其实我觉得这样的框架比较好:struts+session bean+ hibernate


bluesky35 2004-11-12
  • 打赏
  • 举报
回复
to zcjl():
呵呵,太谦虚了,照你那样说的话我也和你一样,EJB一般项目中用得不多(特别是外包),有空交流交流,有很多东西我还要向你请教呢.

Hotmail:bluesky35@hotmail.com
QQ:81806701
chinawit 2004-11-11
  • 打赏
  • 举报
回复
关注
Chendreamer 2004-11-11
  • 打赏
  • 举报
回复
不错,在学习
haode 2004-11-11
  • 打赏
  • 举报
回复
好贴好贴,我现在也正在看这些东西
snow_oracle 2004-11-10
  • 打赏
  • 举报
回复
学习
IceCraft 2004-11-10
  • 打赏
  • 举报
回复
自动建表是插件实现的,与Hibernate本身没什么关系。
在eclipse中使用hibernator插件,可以从你写好的持久化类自动生成映射文件然后自动在数据库中建表。
我们也可以使用myeclipse插件,从数据库表自动生成持久化类和映射文件。
这些都是为了方便开发,hibernate的优秀之处并不在此。
javaprogramlover 2004-11-10
  • 打赏
  • 举报
回复
hiberante真的能自动建表??
加载更多回复(8)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧