标签: java-ee

异步方法的默认EJB事务模式?

  1. 当我@Asynchronous在EJB中有一个方法,而我没有指定@TransactionAttribute,那么容器究竟是如何处理事务边界的呢?显然,它不能使用调用线程的事务,那么它有什么作用呢?

  2. 同样的问题,但关于TimerService触发的方法.


编辑:我想我措辞不好.我已经知道默认模式是'REQUIRED'.因此,假设在事务中始终调用这些方法应该是安全的.但我的问题是,该交易的生命周期是什么样的?容器是否为每个调用创建一个新事务?或者它是否为异步工作线程上的所有调用重用相同的事务?如果是后者,那么交易什么时候关闭?

java ejb glassfish java-ee ejb-3.1

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

hibernate/JPA中的@PreUpdate和@Prepersist(使用session)

我已经打了一个拦截器将修复到现有project.the主要问题是,我一定会喜欢使用@Prepersist,并@PreUpdate在POJO照顾LastModified使用Hibernate与会话实现JPA的领域(INSERT和UPDATE).

原因?:这个更改是必需的,因为需要使用liquibase 1.9.5并且我知道(因为我之前已经面对过)liquibase将时间戳转换为使用默认current_timestamp的日期时间,这对于mysql数据库来说太糟糕了.

所以我需要一种方法来在代码中而不是在数据库中设置这个集合所以我可以安全地将时间戳字段更改为datetime.then liquibase很高兴,我很高兴.

现在似乎那些解释器没有被执行,很少有搜索我发现它适合使用entityManager.目前是不可能的.所以我想知道是否有一个简单的方法解决我的问题,这意味着有@Prepersist或@PreUpdate或甚至其他解决方法来设置lastModified仍然使用会话的字段

java hibernate jpa java-ee

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

Project Lombok有哪些风险?

我想出了新的一年的性能目标,我认为我的目标是减少代码库的大小,特别是样板,我会觉得很有趣.我提出的解决这个问题的一个动作就是使用Project Lombok来使bean尽可能短.但我习惯于忽视新软件和方法的缺点,所以我依赖Stack Overflow社区:谁能告诉我为什么龙目岛是个坏主意?

java boilerplate java-ee lombok

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

使用EL获取列表或数组中的特定元素

是否可以在Java EE页面(Facelets或JSP)中使用EL获取列表或数组中的特定元素,还是必须创建自定义EL方法?

arrays list el java-ee

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

查找实现特定接口的所有类

我正在开发一个应用程序(Quartz调度程序),我们有一个工作类负责实际执行工作,我们需要在Quartz调度程序中创建触发器时告诉/传递作业类的名称.

我想为所有想要使用API​​的人提供一个扩展点(除了我将作为API的一部分提供的一些通用作业).我们的想法是创建一个(标记)接口,如果有人想要将它们的类声明为调度程序作业类,那么他们所要做的就是(声明)实现接口.

我不确定如何找到遵循合同的类(通过实现接口),以便我可以向想要在调度程序中安排触发器的用户显示它们.

我的要求是不在运行时加载类,而是显示实现所需接口的类的用户列表,以便用户可以选择类和类名称可以传递给调度程序.这是Quartz调度程序,它最终将负责创建类的实例.

任何人都可以建议我如何实现上述目标,还是有任何其他更好的方法来实现我想要做的事情?

编辑

我浏览了ServiceLoader的文档,似乎为了实现一个服务,我必须在META-INF文件夹中创建一个具有实现类名称的文件,这使我认为如果我的API的用户想要20个不同的实现,他必须在文件中放入20个条目,这对我来说似乎为最终用户做了很多额外的工作,因为每个工作类将被创建用于执行特定的工作,并且可以有100个工作类.

如果我的假设错了,请纠正我.

java quartz-scheduler java-ee

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

使用exec-maven-plugin运行守护进程避免"IllegalThreadStateException"

我想运行一个应该在maven包阶段开始的守护程序线程.这是我在pom.xml中的内容:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>java</goal>
                    </goals>
                </execution>                                
            </executions>
            <configuration>
                 <mainClass>com.test.Startup</mainClass>
                 <cleanupDaemonThreads>true</cleanupDaemonThreads>
            </configuration>
       </plugin>
  </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

以下是Startup类的内容:

public class Startup {

    public static class Testing extends Thread {
        @Override
        public void run() {
            while(true) {
                System.out.println("testing..");
            }
        }
    }

    public static void main(String[] list) throws Exception {
        Testing t = new Testing();
        t.setDaemon(true);
        t.start();
    }
}
Run Code Online (Sandbox Code Playgroud)

线程开始运行但编译在线程运行时停止.经过一段时间(超时或其他)后,线程停止并继续编译.无论如何,我可以让这个线程在后台开始,并使编译继续自己?

maven的一些输出:

[WARNING] thread Thread[Thread-1,5,com.test.Startup] was interrupted but is still alive after waiting at least 15000msecs
[WARNING] thread …
Run Code Online (Sandbox Code Playgroud)

jboss java-ee maven exec-maven-plugin

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

UnsupportedClassVersionError:WebSphere AS 7中的JVMCFRE003错误主要版本

我收到了这个错误

java.lang.UnsupportedClassVersionError:JVMCFRE003糟糕的主要版本; class = map/CareMonths,offset = 6

我的Eclipse的Java编译器设置为1.6我在C:\ Program Files中安装的Java SDK 1.6.0,但是当我将我的应用程序安装到Webshere Application Server V7时,我仍然遇到此错误.

什么offset=6意思?我想使用Java 6进行编译,而Websphere 7则支持Java 6.

我确实看到安装服务器的IBM目录中的JDK是Java 7.这是导致这种情况的原因吗?....但我的工作区的Eclipse编译器再次设置为Java 1.6.

java eclipse jdk1.6 java-ee websphere-7

34
推荐指数
5
解决办法
17万
查看次数

log4j:特定于程序包的日志记录

如何根据包名设置log4j以记录到不同的文件?

例如:

com.myname.fred logs to fred.log
com.myname.derek logs to derek.log
Run Code Online (Sandbox Code Playgroud)

我正在使用属性文件配置格式.目前它是为服务器设置的,我想单独留下它并为我的日志记录添加内容.

以下是属性文件的外观:

##
## Licensed to the Apache Software Foundation (ASF) under one or more
## contributor license agreements.  See the NOTICE file distributed with
## this work for additional information regarding copyright ownership.
## The ASF licenses this file to You under the Apache License, Version 2.0
## (the "License"); you may not use this file except in compliance with
## the License.  You may obtain a copy of …
Run Code Online (Sandbox Code Playgroud)

java log4j java-ee

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

从具有注释@PostConstruct的类派生

如果您有一个使用@PostConstruct注释的父类,并创建一个从中派生的子类.@PostConstruct每次创建子类的实例时,是否会自动调用该方法?因为@PostConstruct每次创建父实例时都会调用该方法.

我知道在儿童班里它会super();自动呼唤我们,而我们不必打电话给它.

我只是不确定如果该@PostConstruct子类调用super();构造函数,是否自动调用注释.

java inheritance annotations java-ee

33
推荐指数
1
解决办法
9413
查看次数

log4j 2向控制台appender添加多种颜色

嗨,我刚刚下载并配置了log4j-2.我坚持将颜色代码应用于SlowConsole控制台appender.我的控制台appender如下所示.

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n"/>
        </Console>
        <Console name="SlowConsole" target="SYSTEM_OUT">
            <PatternLayout pattern="%highlight{%d{HH:mm:ss.SSS} %-5level %logger{36}.%M() @%L - %msg%n}{FATAL=red, ERROR=red, WARN=yellow, INFO=black, DEBUG=green, TRACE=blue}"/>
        </Console>
        <File name="File" fileName="C:\log\out.txt">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n" />
        </File>
    </Appenders>
    <Loggers>
        <logger name="org.abc.ea.web" level="ALL" additivity="false">
            <!--Log4j for the WEB MODULE -->
            <appender-ref ref="SlowConsole"/>
        </logger>
        <logger name="org.abc.ea.ejb" level="ALL" additivity="false">
            <!--Log4j for the EJB MODULE -->
            <appender-ref ref="SlowConsole"/>
        </logger>
        <Root level="ERROR">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File" …
Run Code Online (Sandbox Code Playgroud)

java xml java-ee log4j2

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