标签: java-ee-6

ASM jar - 为什么我的java项目依赖于此?

我有一个Java项目,内部依赖于它asm jar.奇怪的是,我甚至不知道为什么我的项目以某种方式依赖于这个库(可能由maven引入作为传递依赖)?

任何人都可以帮助我知道为什么有人需要asm jar

提前致谢 !

编辑: 你还可以提一下可能需要什么用途/用例asm jar?

java maven-2 java-ee-6 java-bytecode-asm

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

Java EE 6和CDI

我刚刚开始学习CDI和Java EE 6,但我发现这段代码我想完全理解.

@Stateful
@Model
public class MemberRegistration {
   @Inject
   private EntityManager em;

   @Inject
   private Event<Member> memberEventSrc;

   private Member newMember;

   @Produces
   @Named
   public Member getNewMember() {
      return newMember;
   }
}
Run Code Online (Sandbox Code Playgroud)

然后......我看到一个jsf页面newMember像这样引用了这个对象:

<h:inputText value=#{newMember.name}/>
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:如果我@Named在任何对象的变量中放置一个注释并不重要,无论如何它都可以从JSF代码访问?此外,有什么的使用@Produces在这种情况下,最后被@Stateful优先于@StatelessJava EE 6中?如果是这样的话?

jsf java-ee cdi java-ee-6 jsf-2

9
推荐指数
1
解决办法
3258
查看次数

向EJB方法调用添加自定义上下文信息

我想在从Java Web应用程序(Wicket)调用它们的方法时将身份验证信息传递给EJB无状态会话bean.该信息由用户ID和身份验证类型(记住cookie或用户/密码)组成,并存储在http会话中.一个明显的解决方案是将此作为参数添加到所有EJB方法,但这很麻烦,我希望存在另一种解决方案.

EJB bean的JNDI查找是通过Web层中的javax.naming.InitialContext#lookup(String)完成的.

是否有一种可移植的方法可以将身份验证信息添加到调用上下文中,以便bean可以使用它?我需要此过程可用于EJB层(对于最终的Web服务端点)和Web层中的调用者.

更多信息

我正在使用Java EE 6.不使用CDI,我宁愿避免实现它.

身份验证由Web层处理,无状态bean验证记住cookie和用户/密码组合.当访问者首次访问该站点时,将尝试使用remember cookie进行身份验证.最终需要时,系统会要求用户使用用户名和密码登录.如上所述,身份验证状态存储在http会话中.我不使用基于领域的Java EE安全模型,因为我无法弄清楚如何正确集成此身份验证流程.

授权方案基于动态角色,类似于Facebook根据2个用户和某些偏好之间的链接确定授权的方式.某些操作还会考虑身份验证类型.例如,修改帐户设置需要用户/密码,而cookie是不够的.根据我的理解,Java EE标准组和角色不适合这个要求.

我找到的其他相关问题

EJB3&JAAS主题/主体如何从servlet容器传播到EJB层?

控制在EJB调用上传递的安全性原则

绑定用户实体和GlassFish Principal

在ejb方法中访问客户端主体

Java EE服务器上的动态角色

我希望我的问题很清楚.如果需要更多信息,我很乐意提供.

编辑

固定链接.添加关于CDI的说明.

security authentication java-ee ejb-3.0 java-ee-6

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

JPA Criteria查询Path.get左连接是可能的

我对JPA标准有疑问.

这是我的JPA条件查询:

 CriteriaBuilder criteriaBuilder = getEm().getCriteriaBuilder();
 CriteriaQuery<InventoryItemSumReport> query = criteriaBuilder.createQuery(InventoryItemSumReport.class);
 Root<InventoryItemDetail> from = query.from(InventoryItemDetail.class);    

 Join<InventoryItemDetail, InventoryItem> joinItem = from.join(InventoryItemDetail_.inventoryItem); 

 Predicate where = criteriaBuilder.lessThanOrEqualTo(from.get(InventoryItemDetail_.effectiveDate), date);

 query.multiselect(joinItem.get(InventoryItem_.product),joinItem.get(InventoryItem_.facility),joinItem.get(InventoryItem_.customer));
 query.groupBy(joinItem.get(InventoryItem_.product),joinItem.get(InventoryItem_.facility),joinItem.get(InventoryItem_.customer));
 query.where(where); 

 TypedQuery<InventoryItemSumReport> createQuery = getEm().createQuery(query);       
 List<InventoryItemSumReport> resultList = createQuery.getResultList();
Run Code Online (Sandbox Code Playgroud)

以下是JPA提供程序生成的结果查询:

    select
        inventoryi1_.PRODUCT_ID as col_0_0_,
        inventoryi1_.FACILITY_ID as col_1_0_,
        inventoryi1_.CUSTOMER_ID as col_2_0_ 
    from
        INVENTORY_ITEM_DETAIL inventoryi0_ 
    inner join
        INVENTORY_ITEM inventoryi1_ 
            on inventoryi0_.INVENTORY_ITEM_ID=inventoryi1_.ID 
    inner join
        PRODUCT product2_ 
            on inventoryi1_.PRODUCT_ID=product2_.ID 
    inner join
        FACILITY facility3_ 
            on inventoryi1_.FACILITY_ID=facility3_.ID 
    inner join
        CUSTOMER customer4_ 
            on inventoryi1_.CUSTOMER_ID=customer4_.ID 
    where
        inventoryi0_.EFFECTIVE_DATE<= ? 
    group by
        inventoryi1_.PRODUCT_ID , …
Run Code Online (Sandbox Code Playgroud)

criteria-api java-ee-6 jpa-2.0

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

如何升级过滤器以支持Servlet 3.0异步servlet

我有一个servlet,用于从许多第三方REST数据点获取数据,集成所有数据并以HTML格式报告数据.我也有一个过滤器,其流程如下 -

  1. 请求到达过滤器时创建事件记录,并将eventrecord对象添加到请求中
  2. 执行chain.doFilter - 它允许servlet向eventrecord添加更多细节
  3. 在返回浏览器的路上,filter获取eventrecord对象并记录它.

现在,如果我使用异步servlet AsyncContext context = request.getAsyncContext();,它将与相同的REST数据点进行通信,但是当数据准备就绪时,它将写入响应流而不是等待所有REST数据点响应,我将如何重写我的过滤器?是否会附加到负责从REST数据点刷新数据的线程,以便一旦处理完所有数据并将其记录下来,它将记录事件记录?有没有可以学习的常见模式来理解如何使用Servlet 3.0的异步servlet处理这样的用例?我使用的是JDK 6.0,Tomcat 7.0.

server-push servlet-3.0 java-ee-6

9
推荐指数
1
解决办法
3935
查看次数

JPA 2.0的jar文件

import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
Run Code Online (Sandbox Code Playgroud)

我已经创建了一个JPA项目,我尝试使用上面的类,但是我无法找到他缺少的jar.请指导我.

java jpa java-ee java-ee-6

8
推荐指数
3
解决办法
3万
查看次数

会话bean的会话状态

我正在读一本关于Java EE 6的书,我遇到了以下几个部分:

"无状态:会话bean在方法之间不包含会话状态,任何实例都可以用于任何客户端."

"有状态:会话bean包含会话状态,必须在单个用户的方法中保留."

"会话状态"是什么意思?有人用现实世界的例子来解释它吗?

提前致谢.

II.为什么豆类的这种分类如此重要?无论是正确的解释还是初学者(乍看之下)都没有说明任何事情.所以,多亏了你,我得到了逻辑上的区别,但为什么这种行为如此重要呢?

java-ee ejb-3.0 java-ee-6

8
推荐指数
2
解决办法
3494
查看次数

如何使用继承和CDI事件列表?

是否可以在CDI事件中使用类型差异?这是案例:

  • 假设我有一个根事件类型MyEvent和子类DummyEvent
  • 我的目标是处理从远程源接收的事件列表List<? extends MyEvent>,其中包含DummyEvent实例

我怎样才能做到这一点?

如果我遍历调用fire()每个事件的集合,它将调用@Observes MyEvent evt但不调用@Observes DummyEvent evt方法.

**更新**

创建示例代码以阐明问题:

https://github.com/jfaerman/jfaerman/blob/master/test-cdi/src/main/java/jfaerman/App.java

我希望事件被激发两次,一次单独一次,一次从列表中.

events java-ee cdi java-ee-6 jboss-weld

8
推荐指数
1
解决办法
1713
查看次数

了解cdi Instance <>和.get()vs @Inject

我对以下情况中使用哪个有点困惑:

假设servlet创建一个处理用户http会话的Application,应用程序是这样的:

public class Application extends AbstractHTTPApplication {

@Inject
private Instance<MainView> mainView;

public void setupApplication() {
   this.setView( mainView.get() );
}
Run Code Online (Sandbox Code Playgroud)

后来我有一个@SessionScopedbean SSB,我想注入每个用户的bean:

@SessionScoped
public class SSB {}
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试使用常规@Inject SSB ssb;字段时MainView,我没有SSB为每个用户获取新内容:

public class MainView {

@Inject
private SSB usersSSB;

   public someMethod() {
       usersSSB.doSomething();
       System.identityHashCode( usersSSB );
   }
}
Run Code Online (Sandbox Code Playgroud)

在两个用户的测试中,我在两个用户的会话中得到了相同的实例usersSSB.我认为这不可能......我想,既然SSB是SessionScoped,每个用户会话都会有一个新的,无论它在哪里@Inject编辑,它都会引用用户的SSB.

相反,我试过:

public class MainView {

@Inject
private Instance<SSB> usersSSB;

   public someMethod() {
       usersSSB.get().doSomething(); …
Run Code Online (Sandbox Code Playgroud)

java-ee cdi java-ee-6 jboss-weld

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

使用JBoss AS7中的@DataSourceDefinition配置MySQL DataSource

我能够在standalone.xml中配置MySQL DataSource并且工作正常.但我想使用@DataSourceDefinition注释配置DataSource .

如何在JBoss AS7中使用@DataSourceDefinition配置MySQL数据源?

我已经尝试过的是:

@DataSourceDefinition(
        className = "com.mysql.jdbc.Driver",
        name = "java:global/jdbc/MyDS",
        serverName="localhost",
        portNumber=3306,
        user = "root",
        password = "admin",
        databaseName = "test"
)
@Startup
public class DBConfig {
}
Run Code Online (Sandbox Code Playgroud)

与此persistence.xml一起:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="javaee6-app" transaction-type="JTA">
        <jta-data-source>java:global/jdbc/MyDS</jta-data-source>
        <properties>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
            <property name="hibernate.show_sql" value="true"/>
        </properties>
    </persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)

我有mysql连接器jar文件WEB-INF/lib.

但是当我部署应用程序时,我收到此错误:

(DeploymentScanner-threads - 2){"JBAS014653:复合操作失败并被回滚.失败的步骤:"=> {"操作步骤-2"=> {"JBAS014771:缺少/不可用依赖的服务"=> [" jboss.persistenceunit.\ "javaee6-app.war#javaee6-应用程序\" jboss.naming.context.java.global.jdbc.MyDSMissing [jboss.persistenceunit.\ "javaee6-app.war#javaee6-应用程序\" 的JBoss. naming.context.java.global.jdbc.MyDS]"]}}}

java mysql java-ee-6 jboss7.x

8
推荐指数
1
解决办法
3235
查看次数