- 浏览: 387113 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
793059909:
scala> def count(x:Double,n: ...
快学Scala习题解答—第二章 控制结构和函数 -
793059909:
scala> def countdown(n:Int){ ...
快学Scala习题解答—第二章 控制结构和函数 -
daquan198163:
可是奇慢无比啊,切换个页签得等一分钟啊!!!!!!!!
误会ZK Studio了!Sorry,Sorry! -
rmn190:
受教了, 今天我第一天遇到这个问题, 以前没想到fmt标签还跟 ...
JSP中的国际化(转) -
suu:
都是栈里的拷贝 这句话让我从一头雾水到豁然开朗 谢谢了.
争论话题:Java传值还是传引用?
最近在看Struts2和EJB3,出于好奇,就想试试用部署在tomcat上的struts2去访问部署在jboss上的EJB3程序。对于EJB3之前只用过里面的jpa,感觉很好用,或者说注释很方便,比xml好用。谁知就这个程序耗了我三四个晚上的时间。现在终于搞定了,记录一下,也帮助后来者少走弯路。(感谢论坛id:小疯子的热情帮助^-^)
首先是Struts2的前端页面,so easy!!输入用户名密码,提交。。。。
代码如下:
配置web.xml文件
接着是struts2.xml文件
Action类
这些东西随便找本struts2的书籍,一看就知道了,不多说。
程序往tomcat里一部署就搞定了。。
到这里都没遇到问题。
下面编写EJB程序,一个sessionbean,有个方法check,接收name和password参数,验证是否为Ivan和dd。
代码如下:
实现类
ok.依然很顺。部署到jboss4.22上,看见这个bean了。
一直到这里都没卡住。。。。。窃喜。。。。
下面问题来了,开始两个程序的相互调用。
修改Action类里的execute方法。改成如下代码。
就这几行代码,我就折腾了一个晚上。。。。。晕。
首先,在1处,如果不创建Properties类,而写配置文件的话找不到配置文件。。。。它老找tomcat下的相应属性。(可能位置没放对,目前不清楚,待会再试试!)
再来,改成了目前这样的代码,运行,提示找不到org.jnp.interfaces.NamingContextFactory。。。。又搞一小时,需要把jboss目录下的client目录下的jar包添加到struts2程序的lib里。
接着,说找不到CheckBean接口。。。我已经把struts项目引了ejb项目了,依然没用,最后,拷贝了一份CheckBean到struts里面。
好不容易啊,终于有结果了。。。
再进一步,jpa访问数据库来验证数据。
数据库就两字段,name,password....
接着是EntityBean
继续,修改CheckBeanImpl里的代码,调用EntityBean访问数据库。
配置persistence.xml
好了,问题来了。。。。
它死活找不到数据源,网上搜了半天。。。。SessionBean访问数据源好像只能通过jta来配。。。。jta....从来没接触过。。就这个问题,郁闷了两天。最后终于解决了。。。
首先,到jboss-4.2.2.GA\docs\examples\jca目录下,看看,一堆配置文件。。。我用的mysql,就拷贝mysql-ds.xml到jboss-4.2.2.GA\server\default\deploy目录下。修改内容如下。
应该很好懂吧。。。这就配置了mysql的数据源了。然后在persistence.xml里调用。
这一句
呼,再运行,又报错。。。。。找不到mysql驱动。。。。。晕,这些东西我早放程序里面去了。。。。
火了,直接把jar包给拷贝到了jboss的lib里去了。。。。。。
搞定。。。晕。。。
哎,花了一周时间就写了这么个程序。还从没花这么长时间来入门的。单独的struts2,ejb3程序也就一次搞定的。两者结合就搞出这么多毛病来。
要学的东西实在是太多了啊。。。
jta,jndi,rmi,jboss......
之前只用过tomcat,jetty等web容器,也用过glassfish,也就当web容器用。。。看来应用服务器要复杂得多啊。努力。。。。
首先是Struts2的前端页面,so easy!!输入用户名密码,提交。。。。
代码如下:
<form action="login.action" method="post"> name:<input type="text" name="name"/><br> password:<input type="password" name="psd"/><br> <input type="submit" value="submit"> </form>
配置web.xml文件
<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*.action</url-pattern> </filter-mapping>
接着是struts2.xml文件
<struts> <!-- Add packages here --> <package name="struts2" extends="struts-default"> <action name="login" class="org.ivan.struts2.LoginAction"> <result name="success">success.jsp</result> <result name="failture">failture.jsp</result> </action> </package> </struts>
Action类
package org.ivan.struts2; import java.util.Properties; import javax.naming.*; import org.ivan.ejb.CheckBean; import org.ivan.struts2.bean.Point; import org.jnp.interfaces.NamingContextFactory; public class LoginAction{ private String name; private String psd; private int age; private Point point; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPsd() { return psd; } public void setPsd(String psd) { this.psd = psd; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Point getPoint() { return point; } public void setPoint(Point point) { this.point = point; } public String execute() throws Exception { if ("Ivan".equals(name.trim()) && "dd".equals(password.trim())) { return true; } return false; } }
这些东西随便找本struts2的书籍,一看就知道了,不多说。
程序往tomcat里一部署就搞定了。。
到这里都没遇到问题。
下面编写EJB程序,一个sessionbean,有个方法check,接收name和password参数,验证是否为Ivan和dd。
代码如下:
package org.ivan.ejb; public interface CheckBean { boolean check(String name,String password); }
实现类
package org.ivan.ejb.impl; import java.util.List; import javax.ejb.Remote; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.Query; import org.ivan.ejb.CheckBean; import org.ivan.ejb.jpa.UserBean; import org.ivan.ejb.util.JPAUtil; @Stateless @Remote public class CheckBeanImpl implements CheckBean { @Override public boolean check(String name, String password) { if ("Ivan".equals(name.trim()) && "dd".equals(password.trim())) { return true; } return false; } }
ok.依然很顺。部署到jboss4.22上,看见这个bean了。
一直到这里都没卡住。。。。。窃喜。。。。
下面问题来了,开始两个程序的相互调用。
修改Action类里的execute方法。改成如下代码。
public String execute() throws Exception { /*------------1---------------*/ Properties props = new Properties(); props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); props.setProperty("java.naming.provider.url", "jnp://localhost:1099"); InitialContext context = new InitialContext(props); /*--------------2----------------*/ CheckBean checker = (CheckBean) context.lookup("CheckBeanImpl/remote"); if (checker.check(name, psd)) { return "success"; } return "failture"; }
就这几行代码,我就折腾了一个晚上。。。。。晕。
首先,在1处,如果不创建Properties类,而写配置文件的话找不到配置文件。。。。它老找tomcat下的相应属性。(可能位置没放对,目前不清楚,待会再试试!)
再来,改成了目前这样的代码,运行,提示找不到org.jnp.interfaces.NamingContextFactory。。。。又搞一小时,需要把jboss目录下的client目录下的jar包添加到struts2程序的lib里。
接着,说找不到CheckBean接口。。。我已经把struts项目引了ejb项目了,依然没用,最后,拷贝了一份CheckBean到struts里面。
好不容易啊,终于有结果了。。。
再进一步,jpa访问数据库来验证数据。
数据库就两字段,name,password....
接着是EntityBean
package org.ivan.ejb.jpa; import javax.persistence.Entity; import javax.persistence.Id; @Entity(name="user") public class UserBean { @Id private String name; private String password; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
继续,修改CheckBeanImpl里的代码,调用EntityBean访问数据库。
package org.ivan.ejb.impl; import java.util.List; import javax.ejb.Remote; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; import org.ivan.ejb.CheckBean; import org.ivan.ejb.jpa.UserBean; import org.ivan.ejb.util.JPAUtil; @Stateless @Remote public class CheckBeanImpl implements CheckBean { @PersistenceContext(unitName="loginDS") //注入EntityManager,现在很流行注入啊,呵呵 EntityManager em ; @Override public boolean check(String name, String password) { // if ("Ivan".equals(name.trim()) && "dd".equals(password.trim())) { // return true; // } // return false; String sql = "SELECT u FROM user u WHERE u.name = :n AND u.password = :p"; Query query = em.createQuery(sql); query.setParameter("n", name); query.setParameter("p", password); List<UserBean> us = query.getResultList(); if(us.size() > 0){ return true; } return false; } }
配置persistence.xml
<?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <persistence-unit name="loginDS"> <provider> org.apache.openjpa.persistence.PersistenceProviderImpl </provider> <jta-data-source>java:/MySqlDS</jta-data-source> <class>org.ivan.ejb.jpa.UserBean</class> </persistence-unit> </persistence>
好了,问题来了。。。。
它死活找不到数据源,网上搜了半天。。。。SessionBean访问数据源好像只能通过jta来配。。。。jta....从来没接触过。。就这个问题,郁闷了两天。最后终于解决了。。。
首先,到jboss-4.2.2.GA\docs\examples\jca目录下,看看,一堆配置文件。。。我用的mysql,就拷贝mysql-ds.xml到jboss-4.2.2.GA\server\default\deploy目录下。修改内容如下。
<datasources> <local-tx-datasource> <jndi-name>MySqlDS</jndi-name> <connection-url>jdbc:mysql://localhost:3306/login</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>root</user-name> <password>root</password> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name> <metadata> <type-mapping>mySQL</type-mapping> </metadata> </local-tx-datasource> </datasources>
应该很好懂吧。。。这就配置了mysql的数据源了。然后在persistence.xml里调用。
这一句
<jta-data-source>java:/MySqlDS</jta-data-source>
呼,再运行,又报错。。。。。找不到mysql驱动。。。。。晕,这些东西我早放程序里面去了。。。。
火了,直接把jar包给拷贝到了jboss的lib里去了。。。。。。
搞定。。。晕。。。
哎,花了一周时间就写了这么个程序。还从没花这么长时间来入门的。单独的struts2,ejb3程序也就一次搞定的。两者结合就搞出这么多毛病来。
要学的东西实在是太多了啊。。。
jta,jndi,rmi,jboss......
之前只用过tomcat,jetty等web容器,也用过glassfish,也就当web容器用。。。看来应用服务器要复杂得多啊。努力。。。。
发表评论
-
欢迎关注微信公众账号PigCode
2014-03-25 21:02 931开通了微信公众账号,欢迎大家关注: PigCode 不定 ... -
[FAQ]为什么引入lambda表达式
2013-07-02 20:54 1587Lambda表达式(闭包)在很多现代化的编程语言中很常见。在 ... -
[FAQ]什么是lambda表达式
2013-07-01 23:01 1503在一般数学计算中,lambda表达式就 ... -
Java&Scala比较---设计模式(Singleton)
2013-03-31 11:56 1328单例模式在Scala中就是一个默认实现的模式。 对于Java中 ... -
榨干Hello World:J2SE篇
2010-07-26 23:43 0昨天一时兴起想起这个问题(我好像一般都是一时兴起才会写 ... -
使用Ant部署项目细节问题及解决办法
2009-04-23 22:57 4105说原创也谈不上, ... -
重构?测试?TDD?Ant?
2009-04-11 23:56 2884很意外的,今天花 ... -
《重构:改善既有的代码设计》笔记
2009-03-21 15:30 0现在越看自己的代码越感觉恶心,感觉写得太糟糕了,根本见 ... -
5分钟搞定Schema
2008-12-18 21:38 3296事先声明:搞定不是精通,只是能够运用! 其实schema很简单 ... -
JNDI学习
2008-12-02 17:50 0之前接触过一点E ... -
Struts2源码研究1
2008-08-21 17:30 4992看struts2一周,就搞定了一个程序,郁闷。还有源码里的一个 ... -
将Struts2+EJB3程序从eclipse转移到Intellij Idea上
2008-08-20 16:12 2188之前写了个Struts2+EJB3的入门程序,好不容易搞 ... -
集成jdk到editplus(转)
2008-04-11 21:11 1645对于像我这样的java新手,写java程序用edit ... -
Intellij idea性能优化
2008-03-24 12:54 9147-Xms256m -Xmx384m -XX:MaxPermSi ... -
Struts meets Swing 1 (翻译)
2008-03-13 13:49 2110原文:http://javaboutique.internet ... -
使用Maven2快速创建项目(转)
2008-01-30 16:33 13044源地址:http://www.intellij.org.cn/ ... -
什么是Spring(转)
2008-01-16 13:00 1726最近研究Spring,她包含 ... -
JSP中的国际化(转)
2008-01-09 09:17 10367地区确定和本地化 设计多语言 web 应用程序时,您必须首先决 ... -
Intellij IDEA的部署问题。。。
2008-01-03 17:22 5321在网上偶尔都能看到说Intellij IDEA是如何的好 ... -
JasperReports Web Application Sample (翻译)
2007-12-20 14:20 4500Web Application Sample This sam ...
相关推荐
本教程“Struts1+2入门与精通”旨在帮助初学者和有经验的开发者理解并掌握这两个版本的核心概念和技术。 **Struts1**: 1. **基础架构**:Struts1基于Model-View-Controller设计模式,它将业务逻辑、数据表示和用户...
(2)EJB入门样例 EJBTest.zip //03.EJB入门样例——HelloWorld EJBTestJava.zip //03.Java测试客户端 EJBTestJSP.zip //03.JSP测试客户端 SessionBeanTest.zip //04.会话Bean开发样例 MDBTest.zip //...
(2)EJB入门样例 EJBTest.zip //03.EJB入门样例——HelloWorld EJBTestJava.zip //03.Java测试客户端 EJBTestJSP.zip //03.JSP测试客户端 SessionBeanTest.zip //04.会话Bean开发样例 MDBTest.zip //...
(2)EJB入门样例 EJBTest.zip //03.EJB入门样例——HelloWorld EJBTestJava.zip //03.Java测试客户端 EJBTestJSP.zip //03.JSP测试客户端 SessionBeanTest.zip //04.会话Bean开发样例 MDBTest.zip //...
(2)EJB入门样例 EJBTest.zip //03.EJB入门样例——HelloWorld EJBTestJava.zip //03.Java测试客户端 EJBTestJSP.zip //03.JSP测试客户端 SessionBeanTest.zip //04.会话Bean开发样例 MDBTest.zip //...
第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE容器 1.3.1 容器服务 1.3.2 容器类型 1.4 ...
第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE容器 1.3.1 容器服务 1.3.2 容器类型 1.4 ...
SSE入门程序的配置文件,比如struts.xml、spring-context.xml和ejb-jar.xml,是理解和学习整合的关键。struts.xml定义了Action及其对应的视图,spring-context.xml配置了Spring的bean和依赖关系,ejb-jar.xml则包含...
jsp2.0(1) Spring(1) C#游戏编程(附几个游戏的源代码)(1) 使用ADO.NET和XML开发数据库应用程序(1) EJB-CMP_CMR(1) JSP(1) c#连接数据库完整代码(1) Hibernate(1) 语言规范(1) 2.0(1) Struts(1) 绝对值得下载的资料...
根据给定文件的信息,我们可以提炼出以下关于“泰牛程序员 韩顺平 JavaEE全套 第15部分 Struts2基础入门”的相关知识点。 ### 一、JavaEE概述 Java Platform, Enterprise Edition(JavaEE)是由Oracle公司维护的一...
掌握EJB3的基本知识是必要的,包括理解EJB的体系结构,例如基于STRUTS+EJB3.0的应用架构。对于开发者而言,熟练掌握如何进行EJB打包、如何进行WEB应用和企业应用打包,以及如何处理第三方类库的集成等问题,是提升...
### J2EE电子商务系统开发从入门到精通:基于Struts和Hibernate技术实现 #### J2EE概论 - **双层架构与多层架构的区别**: - 双层架构通常指的是客户端/服务器(Client/Server, C/S)架构,这种架构下的应用程序在...
第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE容器 1.3.1 容器服务 1.3.2 容器类型 1.4 ...
### j2ee入门心得,EJB,Java WEB 开发 #### 关键知识点概述: - **Java Web开发基础**:包括对JSP、Servlet等基础知识的理解。 - **MVC框架的应用**:如Struts 1与Struts 2的区别及应用场景。 - **Spring框架**:...
【巴巴运动网源码 巴巴运动网 EJB+JPA+SSH】是一个与电子商务相关的项目源码,其中融合了多种技术栈,包括EJB(Enterprise JavaBeans)、JPA(Java Persistence API)以及SSH(Struts + Spring + Hibernate)。...
### Struts基础知识与入门详解 #### 一、MVC概念解析 MVC(Model-View-Controller)是一种广泛应用于软件工程的设计模式,特别是在Web应用程序开发领域。它将应用程序分为三个核心部分:模型(Model)、视图(View)和...
3. **Struts2入门**: 入门教程会涵盖如何搭建Struts2环境,包括添加依赖、配置web.xml、创建Action类、编写struts.xml配置文件等内容。还会介绍Struts2的核心概念,如Model-View-Controller(MVC)模式、...
Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展、高效且易于管理的Web应用。本资料包主要涵盖了Struts2的基础知识,包括框架的概述、开发环境的搭建、用户登录实现、表单处理与验证、拦截器机制...
Struts是Java Web开发中的一个开源框架,它主要用于构建基于MVC(Model-View-Controller)模式的应用...阅读“Struts入门经验1.txt”和“Struts入门经验2.txt”文件将提供更具体的操作步骤和技巧,进一步帮助你上手。