`
wetouns
  • 浏览: 25558 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

把我的SEAM开发中碰到的问题全贴出来(已把错误的地方更正)

阅读更多
可能有些内容其他人不知道我在说什么

组件中被作为事件处理的方法一定要在接口中声明其方法,再在XXXBean中实现其方法,不然会报错:找不到方法绑定。

如果使用默认的XHTML格式的页面,那页面导航可能要在pages.xml文件里面配置,不然会导致注入失败,绑定的值无法被传输,具体原因还在查明中

如果想用JSF默认的页面导航就使用JSP格式的文件并把默认的文件后缀改成jsp而不是xhtml

在QL语句中所涉及到的表名和字段名都要使用实体名和实体的getter方法的名字(field名),字段中出现字符串的字段要加上单引号

@Out注出的时候,对象不能够被设定为null,可以把相应的属性设置为空字符串

@In(create=true)如果在上下文中找不到要注入的实例,就自动创建一个,如果不设置自动创建,就可能要报错.一定要保证注入的值不能为空.或者可以指定@In(require=false)表示可以为空(NULL),但在组件的方法中千万不要拿它来进行操作,否则就会出错,因为它可以为空,所以一个没有被创建对象是不能用来操作的


注意,在对列进行命名的时候要注意千万不要和MYSQL的保留字段有冲突,无论大小写,比如MYSQL保留字段为READ,在给列命名的时候read也不可以。

貌似有操作才会有注出

用于页面导航的结果首字母最好不要大写,全部小写!如果是大字,则只会停留在原来的页面而不会导航到你所希望的页面.

Yes but you are finding the item and then removing it. As you aren't inside a transaction, once the item has been found, it will now be detached. When you delete it, the exception occurs. If you fix the transaction attributes it should work.

如果在有状态组件中要删除一个表中的实体,可能会出现上述情况,但如果把持久化上下文改为扩展的持久化上下文就不会有事了

不知道是一发现还是一什么,说说吧:

表中被选中的实体会注入,我再将它注出到上下文中,用几个edit框来绑定它的属性,只要对这个属性进行修改,再提交一下,修改过的资料就会自动更新到数据库了.

一般实体中的注释都是加在getter上的。


如果不指定主键自动生成,则在添加的时候会产生错误

在实体的操作中要注意请求生命周期的问题!

定义一个简单的安全规则
首先要在component.xml中把验证方法指定好.这个方法必须是要返回一个boolean值,以确定验证是否成功,在验证成功的分支里要用addRole()方法来添加一个被许可的成员,它的参数是一个字符串,比如说是'admin'
然后在XXX.page.xml中定义登陆页面的导航方向
Identity是Seam的一个内置组件,在登陆页面上直接使用它的属性来和输入控件绑定,在验证的时候再用Identity来提取用户名和密码.Identity的identity.loggedIn方法是判断用户是否登入了
在组件中添加@Restrict("#{s:hasRole('admin')}")注解,中的参数表明了有没有'admin'这个角色,有就可以调用被限制了的方法,没有就无法访问.


JSF页面的中文解决方式
<?xml version="1.0" encoding="UTF-8"?>  
<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:s="http://jboss.com/products/seam/taglib" 
      xmlns:ui="http://java.sun.com/jsf/facelets" 
      xmlns:h="http://java.sun.com/jsf/html" 
      xmlns:f="http://java.sun.com/jsf/core" 
      xmlns:rich="http://richfaces.org/rich">  
<head>  
<title>SEAM</title>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head>  
<body>  
中文解决方式  
</body>  
</html>

在persistence.xml中hbm2ddl的value="validate"设成none可以不要它去验证mapping的正确性,如果表设计得不够好,验证就会出事.

首先数据源是提供给持久化单元引用的,在SEAM里面.
在一个持久化单元中指定两个数据源,可以这样
<persistence-unit name="GTHP">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <jta-data-source>java:/GTHPDatasource</jta-data-source>
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>
         <property name="hibernate.hbm2ddl.auto" value="none"/>
         <property name="hibernate.show_sql" value="true"/>
         <property name="hibernate.format_sql" value="true"/>
         <property name="jboss.entity.manager.factory.jndi.name" value="java:/GTHPEntityManagerFactory"/>
         <property name="hibernate.default_catalog" value="gth_account"/>
         <property name="hibernate.default_schema" value="dbo"/>
      </properties>
   </persistence-unit>
    <persistence-unit name="GTHP2">
    <jta-data-source>java:/MSSQL</jta-data-source>
          <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>
         <property name="hibernate.hbm2ddl.auto" value="none"/>
         <property name="hibernate.show_sql" value="true"/>
         <property name="hibernate.format_sql" value="true"/>
         <property name="jboss.entity.manager.factory.jndi.name" value="java:/GTHPEntityManagerFactory"/>
         <property name="hibernate.default_catalog" value="gth_account"/>
         <property name="hibernate.default_schema" value="dbo"/>
      </properties>
    </persistence-unit>

之后持久化管理器只要指定一个要引用哪个持久化单元的名字,就可以引用不同的数据源了.

Jboss中EJB使用时,同时调用两个数据源的时候出现问题


同时调用两个数据源程序会报错[com.arjuna.ats.internal.jta.transaction.arjunacore.lastResource.disallow] Adding multiple last resources is disallowed. Current resource is org.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource@d006a7

需要在jboss 配置文件jbossjta-properties.xml中增加<property name="com.arjuna.ats.jta.allowMultipleLastResources" value="true"/> 这个配置后应用正常

更改JBOSS访问路径
在使用ear进行发布  在ear中配置文件中 把 context-root的值设置一下
例如
  <module>
    <web>
      <web-uri>aaa.war</web-uri>
      <context-root>/</context-root>
    </web>
  </module>


用文件上传的组件时,对于文件的保存,是不可以直接使用item.getData()的.必须用输入流来读取文件成字节,再用输入流把它写成文件.

本文已重新编辑,因为是我初学的时候总结出来的,有很多不正确的地方,现在学了一段时间了有了更深的理解所以进行了更正
4
1
分享到:
评论
4 楼 wetouns 2008-06-07  
谢谢各位的提醒,我已经知道怎么正确使用conversation了
3 楼 wetouns 2008-05-28  
我尝试过把它提升为长时间运行的对话,用了@Begin注解并调用这个方法,照样没用,当一个请求结束之后,BEAN的destroy方法立马被调用,是什么原因??请赐教
2 楼 yourenyouyu2008 2008-05-28  
xxqn
说的对,conversation跟工作流没有关系,完全可以单独使用对话,我们现在所有的table都绑定到conversation范围。
实体bean默认就是对话范围的,不需要在明确定义。
1 楼 xxqn 2008-05-28  
关于上下文范围conversation生命周期又只是一个请求的情况,只要你将当前的conversation提升为长时间conversation,有两个方法,一个在pages.xml定义<begin-conversation join="true" />,另一个在bean中定义,查文档。

相关推荐

    SEAM 中文开发指南

    ### SEAM 中文开发指南知识点概述 #### 一、SEAM 框架简介 - **SEAM**:SEAM 是一个基于 Java EE 的企业级应用框架,它简化了复杂的应用程序开发过程,并且提供了丰富的功能来支持业务逻辑的实现。 - **版本信息**...

    JBOSS SEAM组件中文手册

    Seam的主要目标是减少开发中的样板代码,提高生产力,同时保持灵活性和可扩展性。 **二、Seam核心概念** 1. **组件(Components)**: Seam的核心是组件模型,它允许开发者定义和管理应用中的对象。组件可以是简单的...

    《SeamInAction》+《JbossSeam》+《官方中文指南》

    Seam是一个全面的Java开发框架,专...总之,拥有《Seam In Action》、《JBoss Seam》和《官方中文指南》这些资源,开发者可以系统地学习和精通Seam框架,从而在企业级Java应用开发中游刃有余,提高开发效率和应用质量。

    seam 2中文手册

    seam下一代web开发框架

    seam in action 中文 english

    Seam是一个强大的Java EE框架,它集成了多种技术,如JavaServer Faces (JSF)、Enterprise JavaBeans (EJB)、Java Persistence API (JPA)以及 Seam自身的组件模型,旨在简化企业级应用的开发过程,提高开发效率。...

    JbossSeam中文开发指南.docx

    Jboss Seam中文开发指南 Jboss Seam是基于Java EE 5.0的框架,提供了一个基于组件的架构,能够帮助开发者快速构建企业级应用程序。Seam框架提供了一个统一的编程模型,能够将JSF、EJB、JPA等技术整合在一起,提供了...

    seam 中文文档 pdf

    seam 中文文档 pdf 格式 JSF+EJB3.0快速开发框架Seam的中文版向导。。。

    jboss seam 中文文档集合

    **JBoss Seam 中文文档集合概述** JBoss Seam 是一个开源的应用框架,它结合了JavaServer Faces (JSF)、Java Persistence API (JPA)、Enterprise JavaBeans (EJB) 3.0 和其他Java EE组件,旨在简化企业级开发。这个...

    jboss seam 架设Eclipse 中常见的错误解决.doc

    在Eclipse中配置和运行Seam项目时,可能会遇到一些常见错误。本文将针对这些问题提供解决方案。 首先,我们讨论的是EditPlus软件中的问题。EditPlus是一款轻量级且功能强大的文本编辑器,深受程序员喜爱。当保存...

    NetBeans下jboss seam开发入门

    jBoss Seam有一个活跃的社区,提供各种教程、示例和论坛讨论,帮助开发者解决遇到的问题。不断学习和实践,掌握Seam的高级特性,如CDI、Faces Flow等,能够进一步提升开发效率。 总的来说,NetBeans与jBoss Seam的...

    jboss教程及深入浅出JBoss+Seam

    6. **故障排查**:掌握常见的错误日志分析技巧,以便于定位和解决问题。 7. **性能优化**:了解如何调整服务器配置,提高应用性能,如内存设置、线程池管理等。 **二、深入浅出JBoss+Seam** Seam是一个全面的Java...

    seam需要的jar包

    Seam框架是一个全面的Java企业级应用开发框架,它整合了JSF(JavaServer Faces)、EJB、CDI(Contexts and Dependency Injection)以及许多其他Java EE技术,为开发者提供了强大的组件模型和丰富的功能,旨在简化...

    eclipse 工程的 Seam 例子

    Seam、EJB和JSF是Java开发中的三个重要框架,它们在企业级应用程序开发中发挥着关键作用。本文将详细讲解如何在Eclipse环境中创建并理解一个Seam工程的实例,结合EJB(Enterprise JavaBeans)和JSF(JavaServer ...

    jboss seam 学习资料,seam in action和官方手册

    **JBoss Seam 学习资源概述** ...通过阅读这些材料,开发者可以全面了解和掌握JBoss Seam框架,提升其在企业级Java应用开发中的技能。不论是初学者还是经验丰富的开发者,都能从中获益,进一步提升自己的技术水平。

    jboss seam 教程

    ### JBoss Seam 教程知识点概述 #### 一、Seam简介与教程概览 - **Seam**:一个基于Java EE平台的应用框架,旨在简化企业级应用开发。 - **JBoss Seam**:由JBoss提供的Seam实现,提供了一系列功能强大的工具和...

    JSF项目中seam的配置

    Seam 是一个强大的Java EE框架,它主要用于简化JavaServer Faces (JSF)应用程序的开发,同时提供了对EJB 3、CDI(Contexts and Dependency Injection)、Ajax等技术的集成。在JSF项目中配置Seam,可以充分利用其优势...

    近两个星期seamtest的学习

    在过去的两周里,我深入学习了SeamTest,这是一个用于Java EE应用测试的强大...在实际使用过程中,遇到的问题和错误是学习过程的一部分,通过解决这些问题,我们可以更深入地理解SeamTest和Seam框架的内部工作原理。

Global site tag (gtag.js) - Google Analytics