标签: java-ee-6

@PostConstruct中的CDI参数

我认为我的问题与类似,但尚未发现它可行

  <f:metadata>
  <f:viewParam id="id" name="id" value="#{detailsBean.id}"/>
 </f:metadata>
Run Code Online (Sandbox Code Playgroud)

为什么我不能用@Named执行此操作并使用CDI:

@Named
@RequestScoped
public class DetailsBean {

    private Contacts detailsContact;
    @EJB
    ContactsFacade contactsEJB;
    private int id;

    public DetailsBean() {

        System.out.println("details bean called");
    }

    @PostConstruct
    public void onLoad() {
        detailsContact = contactsEJB.find(id);

}
Run Code Online (Sandbox Code Playgroud)

我无法记录身份证.

当然,@ ManagedProperty与CDI不兼容.

*****UPDATE*****

一些xhtml:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                template="../template.xhtml"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:p="http://primefaces.prime.com.tr/ui"
                xmlns:f="http://java.sun.com/jsf/core">

    <ui:define name="head">
        <f:metadata>               
            <f:viewParam name="paginator" value="#{contactsBean.contactsTablePaginator}"/>
            <f:viewParam name="rows" value="#{contactsBean.contactsTableRows}"/>
        </f:metadata>
    </ui:define>

    <ui:define name="content">
        <p:growl id="growl" showDetail="true"/> …
Run Code Online (Sandbox Code Playgroud)

java ejb-3.0 java-ee-6 jsf-2

2
推荐指数
1
解决办法
4723
查看次数

CDI ConversationScoped长期运行的Bean无法运行

我在理解Weld或CDI的会话范围时遇到了一些问题.

在我的JSF Faclets页面中,我调用:

        <f:metadata>
            <f:event type="preRenderView" listener="#{viewBean.start}" />
        </f:metadata>
Run Code Online (Sandbox Code Playgroud)

豆子:

import javax.enterprise.context.Conversation;
import javax.enterprise.context.ConversationScoped;
@Named
@ConversationScoped
public class ViewBean implements Serializable {

@Inject
    private Conversation conversation;

public void start() {
    if (conversation.isTransient()) {
        System.out.println("START CONVERSATION");
        conversation.begin();

    }
}
Run Code Online (Sandbox Code Playgroud)

现在每次刷新浏览器时,都会启动一个新的对话.这是正确的行为吗?那么为什么谈话总是短暂的?没有异常被抛出.beans.xml已创建并为空:

<beans xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>
Run Code Online (Sandbox Code Playgroud)

jsf cdi java-ee-6 jboss-weld

2
推荐指数
1
解决办法
5212
查看次数

通过JPA关系进行Bean验证

我想使用Bean验证来注释实体中的约束,现在的问题是,实体上的关系也将得到验证吗?例如,假设我有以下实体:

@Entity
@Table(name = "css_empresa")
public class Empresa extends EntidadContactable implements Serializable,
    Convert {
private static final long serialVersionUID = 1L;

@Id
@SequenceGenerator(name = "EMPRESA_ID_GENERATOR", sequenceName = ConstantesSecuencias.SEQ_EMPRESA)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "EMPRESA_ID_GENERATOR")
@Column(name = "cod_empresa", unique = true, nullable = false)
private Long id;

@Column(name = "num_ruc", precision = 13)
private BigDecimal numRuc;

@Column(name = "num_rup", precision = 15)
private BigDecimal numRup;

@Column(name = "txt_direccion_web", length = 255)
private String txtDireccionWeb;

@NotNull
@Column(name = "txt_nombre", nullable = false, …
Run Code Online (Sandbox Code Playgroud)

bean-validation java-ee-6 jsf-2 jpa-2.0

2
推荐指数
1
解决办法
2481
查看次数

什么使企业豆'重量级'?

我已多次读过EJB的重量级...但昨晚我正在阅读有关EJB的Java EE 6教程,它们似乎只是常规的Java对象,除了它们可以有无状态或单例等注释.除此之外,它们(非常基本的)教程中包含的功能非常标准,就像MVC应用程序中的模型类一样.

  1. 那么为什么会遇到对EJB的非常消极的态度呢?
  2. 为什么我看到它说绝大多数网络应用都没有必要?
  3. 是什么让他们'重量级'?

ejb javabeans java-ee-6

2
推荐指数
1
解决办法
1229
查看次数

如何为独立客户端设置Glassfish 3.1.2的JNDI?

我尝试从独立的swing客户端(在客户端计算机上的单独JVM中运行)连接到Glassfish服务器.

我目前使用Netbeans的以下设置,一切正常:

System.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
System.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
System.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
System.setProperty("org.omg.CORBA.ORBInitialHost", "192.168.1.3");
System.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
InitialContext context = new InitialContext();
Run Code Online (Sandbox Code Playgroud)

但是当我尝试通过键入"java -jar client.jar"从控制台启动编译的客户端时,我收到以下错误:

D:\workspace\gf-client\dist>java -jar gf-client.jar
17.08.2012 11:07:38 ch.client.core.ServerContext getInitialContext SCHWERWIEGEND: Cannot instantiate class: com.sun.enterprise.naming.SerialInitContextFactory javax.naming.NoInitialContextException: Cannot instantiate class: com.sun.enterprise.naming.SerialInitContextFactory [Root exception is java.lang.ClassNotFoundException: com.sun.enterprise.naming.SerialInitContextFactory]
        at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
        at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
        at javax.naming.InitialContext.init(Unknown Source)
        at javax.naming.InitialContext.<init>(Unknown Source)
        at ch.lawsuite.core.ServerContext.getInitialContext(ServerContext.java:2 7)
        at ch.client.core.remote.Facades.initialize(Facades.java:68)
        at ch.client.core.Client.main(Client.java:57) Caused by: java.lang.ClassNotFoundException: com.sun.enterprise.naming.SerialIni tContextFactory
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown …
Run Code Online (Sandbox Code Playgroud)

java glassfish initial-context java-ee-6

2
推荐指数
1
解决办法
2万
查看次数

javax.faces.FacesException:启用选择时,DataModel必须实现org.primefaces.model.SelectableDataModel

我有另一个案例就是这个问题,我有一个模型,它扩展了一个基本实体,并且该基本实体具有属性id.我使用该id作为rowKey,它会抛出此错误.当我将rowKey的值设置为模型(而不是抽象基础)中的任何属性时,数据表工作.

请注意,我正在使用JavaEE6.

型号:

@Entity
@SequenceGenerator(name = "ID_GENERATOR", sequenceName = "USER_ADDRESS_SEQ")
public class UserAddress extends BaseEntity { //.. }

@MappedSuperclass
public abstract class BaseEntity implements Serializable, IEntity {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(generator = "ID_GENERATOR")
    @Column(name = "ID")
    private Long id;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    } ..
Run Code Online (Sandbox Code Playgroud)

JavaEE6 bean:

@Stateless
@Named
public class UserAddressBean implements Serializable {
    private static final long serialVersionUID = -6104153017102665096L; 

    private List<UserAddress> …
Run Code Online (Sandbox Code Playgroud)

jsf primefaces java-ee-6

2
推荐指数
1
解决办法
1万
查看次数

如何在Java EE 6中通过EL检索上下文参数?

可能重复:
JSF 2 - 如何使用JSF EL从web.xml获取上下文参数值?

我习惯于以这种方式使用EL检索上下文参数

${applicationScope.configs.parameterName}
Run Code Online (Sandbox Code Playgroud)

而且效果很好.

现在,我正在使用Tomcat 7和Java EE 6(servlet和jsp规范)的新项目,上面的例子不起作用.我创建了web.xml只是为了设置一些参数.在servlet中,我只是使用

getServletContext().getInitParameter( "parameterName" );
Run Code Online (Sandbox Code Playgroud)

并且它工作正常,但是当我尝试在我的JSP中使用第一个示例时,它不起作用,没有任何反应,就像"configs"映射不存在一样.我已经搜索了一些解决方案,但我没有找到任何东西.我尝试了几件事:

${applicationScope.initParameter.parameterName}
${applicationScope.initParameters.parameterName}
Run Code Online (Sandbox Code Playgroud)

它也不起作用.我想知道如何使用Tomcat 7(Java EE 6)在我的JSP中检索上下文参数.

java jsp servlets el java-ee-6

2
推荐指数
1
解决办法
5742
查看次数

使用Java EE 6 Bean验证

我正在尝试使用此处指定的Java EE 6验证

http://docs.oracle.com/javaee/6/tutorial/doc/gircz.html

我注释了一个简单的字段

@Max(11)
@Min(3)
private int numAllowed;
Run Code Online (Sandbox Code Playgroud)

文档说"对于内置约束,可以使用默认实现"但是如何指定它.我的约束检查没有开始.我希望它能够调用字段的setter方法.我班上唯一的进口是

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
Run Code Online (Sandbox Code Playgroud)

我如何/在何处指定实施?我将约束放在一个简单的POJO而不是@Entity类的字段上,这样可以吗?

java java-ee bean-validation java-ee-6

2
推荐指数
1
解决办法
9379
查看次数

替代无限循环作为监听器

好吧,也许这对我来说是一个小问题.但我想问一下这个问题.我有一个Java Web应用程序,它通过无限循环检查来自AS400的DataQueue.如果队列中有消息,它会将消息传递给MQ,如果没有,只需继续检查.

起初这是一个好主意,但似乎当我在WAS中部署这个Web应用程序(ServletContextListener)并启动它时,我无法阻止它.也许是因为它消耗了资源.

所以也许无限循环不是答案.您是否知道在AS400 DataQueue上不断检查新消息的方法?

java java-ee-6 ibm-midrange

2
推荐指数
1
解决办法
1190
查看次数

如何在EJB 3.1中缓存EJB远程接口?

有没有办法在客户端缓存对远程 EJB 的引用?

在 EJB 2.x 中,它是通过缓存EJBHome来实现的。

我们在EJB 3.x中是否有任何类似的功能来缓存EJB 远程接口,该接口将在每次使用时提供 EJB(无状态会话 bean)的新实例?(在EJB 2.x中,当我们在EJBHome上调用create()方法时,我们会获得 EJB 的新实例)

java ejb java-ee-6 ejb-3.1 jakarta-ee

2
推荐指数
1
解决办法
725
查看次数