Tag: java ee

从JSF页面调用方法疑惑

关于我在EL中调用方法的方式,我有几个问题。 也许有人可以解释它是如何运作的。 我做了这个非常简单的例子: 的index.xhtml #{bba.salute()} #{bba.b.doSomething()} BackBeanA.java @Named(“bba”) @SessionScoped public class BackBeanA implements Serializable { private static final long serialVersionUID = 5671761649767605303L; @Inject private BackBeanB b; public String salute() { return “Hi! I am ‘A'”; } public BackBeanB getB() { return b; } public void setB(BackBeanB b) { this.b = b; } } BackBeanB.java @Named(“bbb”) […]

JPA 2.0:什么是javax.validation。*包?

什么是java ee中的javax.validation.*包,如何在JPA 2.0中使用它? 我想用@NotNull注释validation我的Enity。 我的JPA实现是Hibernate: public class Employee implements Serializable , EmployeeDetail { private static final long serialVersionUID = 1L; @Id @GeneratedValue private int id; private String name; private long salary; …

配置Log4j属性路径的最佳实践

我在我的应用程序中使用Log4j。 log4j.properties放置在类路径中的Jar中。 正在使用此配置文件,并且大多数时候都可以正常工作。 但有时,生成的日志记录语句不符合配置文件。 我的理解是,这是因为属性文件是从类路径中获取的。 无论第一个属性文件是什么,都是由log4j提取和使用的。 因此,有时我们会使日志语句与属性文件中配置的日志语句不同。 如果上述原因是正确的,那么我认为,我们需要通过以下方式之一具体指定配置文件: 使用系统属性指定:-Dlog4j.configuration = log4j.properties 初始化Log4jInit servlet。 请建议哪种方法更好。

在CDI SessionScoped bean中注入HttpServletRequest

我有一个会话范围的CDI bean,我需要以某种方式访问​​这个bean的@PostConstruct方法中的HttpServletRequest对象。 可能吗? 我试过注入这样一个对象,但结果是: WELD-001408 Unsatisfied dependencies for type [HttpServletRequest] with qualifiers [@Default] at injection point [[field] @Inject …] 正如我在google搜索中所理解的那样,Seam框架具有这样的function,但我在GlassFish服务器上有一个标准的Java EE应用程序。 是否有可能以某种方式将请求传递给CDI bean的@PostConstruct方法?

org.hibernate.ObjectNotFoundException:不存在具有给定标识符的行,但它确实存在

我有一个无法修复的hibernate问题。 设置:Java EE,Web应用程序,Hibernate 3.2,Tomcat 6,Struts 2。 基本上,我使用我的服务器逻辑(一个struts动作)持久保存一个对象,然后尝试将该数据拉出来用于下一页并显示它。 我保存对象后检查数据库,果然,我可以在那里查看包含所有数据的行。 但是当我尝试检索它时,我得到了这个: org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [msc.model.Picture#73] 为了使事情变得更加混乱,当我重新启动Tomcat并尝试访问同一个对象时,我没有得到错误 – Hibernate发现行就好了。 如果我做一些其他的操作,Hibernate也能看到该行 – 也许在这里和那里添加一行到数据库,甚至不在同一个表上。 从这一切我怀疑一个Hibernate错误,但我是一个Hibernate新手,所以我可能错了。 请帮忙! 我用Google搜索并用Google搜索无效。 这是我的Hibernate配置: org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/msc root ——- 80 thread true 这是我的两个映射文件: 和 如果您需要更多信息,请告诉我,我很高兴。 (注意:这不是这个问题的重复,场景不一样“没有给定标识符的行存在”,尽管它存在 ) 编辑 :根据要求,发布Java代码: 用于保存对象的代码 Session hib_ses = HibernateUtil.getSessionFactory().getCurrentSession(); hib_ses.beginTransaction(); hib_ses.save(user); hib_ses.getTransaction().commit(); 显示数据的代码(本例中为图像) public class ImageAction […]

JSESSIONID存储在哪里? (JavaEE的)

我有两个应用程序 – 一个Java EE Web应用程序和一个Java SE applet。 我想通过JSESSIONID(由Web应用程序创建)在applet中validation用户。 所以有一个问题 – 如何将这个JSESSIONID与特定用户相关联? 如何检查(在Web服务器应用程序端)哪个用户由这样的JSESSIONID表示? 在applet中我将从cookie中读取它,然后我想编写一个简单的Servlet,它将接受这个JSESSIONID作为POST消息。 此后,当JSESSIONID不好时,我想在响应中写任何内容,如果JSESSIONID是好的(即代表某人),则用户信息。 有谁知道如何做到这一点?

如何在Spring / EJB / Mockito …代理上处理内部调用?

众所周知,当你代理一个对象时,就像你为Spring / EJB创建一个具有事务属性的bean,或者甚至在你创建一个带有某些框架的部分模拟时,代理对象不知道这一点,并且内部调用不会被重定向,然后没有截获…… 这就是为什么如果你在Spring做类似的事情: @Transactionnal public void doSomething() { doSomethingInNewTransaction(); doSomethingInNewTransaction(); doSomethingInNewTransaction(); } @Transactional(propagation = Propagation.REQUIRES_NEW) public void doSomethingInNewTransaction() { … } 当您调用doSomething时,除了主要事件之外,您预计会有3个新事务,但实际上,由于此问题,您只能获得一个… 所以我想知道你是如何处理这些问题的… 我实际上处于一种必须处理复杂事务系统的情况,我没有看到比将服务分成许多servlets更好的方法,所以我肯定会通过所有代理… 这让我很烦恼,因为所有的代码都属于同一个function域,不应该被拆分…… 我发现这个相关问题的答案很有趣: Spring – @Transactional – 后台会发生什么? Rob H说我们可以在服务中注入spring代理,并调用proxy.doSomethingInNewTransaction(); 代替。 它很容易做到并且有效,但我真的不喜欢它…… 侯云峰说: 所以我编写了自己的CglibSubclassingInstantiationStrategy和代理创建器版本,以便它将使用CGLIB生成一个真正的子类,该子类将调用委托给它的super而不是Spring现在正在做的另一个实例。 所以我可以自由地注释任何方法(只要它不是私有的),并且从我称之为这些方法的地方,它们将被处理。 好吧,我还有代价:1。我必须列出我想要启用新CGLIB子类创建的所有注释。 2.由于我现在正在生成子类,因此无法对最终方法进行注释,因此无法截获最终方法。 他说“现在哪个spring在做什么”是什么意思? 这是否意味着内部交易呼叫现在被截获? 你觉得哪个更好? 当您需要某些事务粒度时,是否拆分了类? 或者您使用上面的一些解决方法? (请分享)

EJB客户端如何在没有url的情况下找到EJB服务器?

我是Java EE的新手。 目前,我正在阅读Sun Microsystems 的Java EE 6 Tutorial,Volume 1(Basic Concepts Beta) 。 为了避免单调的阅读时间,我玩其他人编写的Java EE项目/代码很少。 我来自SE。 我的头仍然充满了SE。 在SE( 两层应用程序)中我使用 DATABASE_URL = “jdbc:mysql://something.db_server.com/db_name” 这就是我的客户端知道数据库服务器的位置。 在我看到的一个Java EE示例中 // Access JNDI Initial Context. Properties p = new Properties(); p.put(“java.naming.factory.initial”,”org.jnp.interfaces.NamingContextFactory”); p.put(“java.naming.provider.url”,”jnp://localhost:1099″); p.put(“java.naming.factory.url.pkgs”,”org.jboss.naming:org.jnp.interfaces”); InitialContext ctx = new InitialContext(p); // Change jndi name according to your server and ejb HelloRemote remote = […]

Jersey …如何记录所有exception,但仍然调用ExceptionMappers

我有点束缚……想要我的蛋糕,也吃它。 我想记录我的应用程序抛出的所有exception。 因此,如果有人遇到错误的URL,我想将堆栈跟踪记录到SLF4J。 所以你可能在想,“嘿,这很简单,只需实现exception映射并记录exception。”所以我做了: public class RestExceptionMapper implements ExceptionMapper { private static final Logger log = LoggerFactory.getLogger(RestExceptionMapper.class); /** * {@inheritDoc} */ @Override public Response toResponse(Exception exception) { log.error(“toResponse() caught exception”, exception); return null; } } 如果你这样做,当有人输入错误的URL时,而不是404错误,他们会得到500错误。 有人会猜测返回null会将exception传播到链式处理程序,但Jersey不会这样做。 它实际上提供了很少的信息,为什么它会选择一个处理程序而不是另 有没有人遇到过这个问题,你是怎么解决的?

Eclipse中部署程序集和J2EE模块依赖项之间的区别

使用Eclipse 3.7 Indigo for Java EE Developers时,有一种叫做Deployment Assembly的东西。 我可以在google上找到它并且理解它类似于J2EE模块依赖项 ,在那里我们可以选择jar并且在WAR的情况下它位于EAR文件夹或WEB-INF / lib中。 现在我怀疑的是, 我有一个JavaProject 依赖项 。 我已经通过classpath变量添加了所有依赖的Jars。 现在, Dependencies项目被添加为我的Web Project TestWebProject的依赖项 。 Web项目的编译是正确的,但在运行时我得到一个错误,因为没有找到一些jar。 我可以在Dependencies Project的Deployment Assembly中修复这个包含jar,这是一个独立的项目。 问题是,为什么我必须在部署程序集中修复jar,因为,首先,它是一个独立项目,第二个是如果我没有这个部署程序集,怎么能修复它?