小编Poo*_*ool的帖子

Mockito和CDI bean注入,@ InjectMocks调用@PostConstruct?

我有这个代码:

class Patient {

  @Inject Syringe syringe;

  @PostConstruct
  void sayThankyouDoc() {

    System.out.println("That hurt like crazy!");

  }

}

@RunWith(MockitoJUnitRunner.class)
class TestCase {

  @Mock
  Syringe siringeMock;

  @InjectMocks
  Patient patient;

  //...

}
Run Code Online (Sandbox Code Playgroud)

我希望Mockito能够调用PostConstruct,但我必须添加:

@Before
public void simulate_post_construct() throws Exception {
    Method postConstruct = Patient.class.getDeclaredMethod("sayThankyouDoc", null);
    postConstruct.setAccessible(true);
    postConstruct.invoke(patient);
}
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

java junit mockito postconstruct cdi

10
推荐指数
1
解决办法
6877
查看次数

如果多个线程可以访问某个字段,那么它应该标记为volatile吗?

阅读几个线程(常见的并发问题,volatile关键字,内存模型)我对Java中的并发问题感到困惑.

我有很多字段可以被多个线程访问.我是否应该通过它们并将它们标记为易变?

在构建一个类时,我不知道多个线程是否会访问它,所以让任何字段都不易变化是不安全的,所以根据我的理解,你很少会使用它.它是否正确?

对我来说,这是特定于版本1.5 JVM及更高版本,但不仅限于回答我的具体设置.

java memory atomic volatile

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

JVM基准测试应用程序

我们希望比较不同环境(Windows,Solaris,...)中相同Java版本(1.5)的不同JVM的一般性能(CPU,I/O,网络......).

您知道任何可用于比较不同JVM结果的JVM基准测试应用程序吗?

非常感谢你.

java benchmarking jvm

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

可以为Java Applet添加什么安全性?

在构建Java Applet时,是否有任何可以阻止用户调用内部方法的步骤?

从理论上讲,可以分析大多数对象,并可以在客户端计算机上调用方法.

除了混淆之外还有其他任何可以帮助防止这种情况的步骤吗?

我的情况是确保从客户端直接发送最高分的游戏.

java security obfuscation applet

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

WebSphere 8.5是否内置了JAX-RS处理?

IBM支持上的多个页面似乎在JAX-RS是否内置于WebSphere 8.5中有所不同.

http://www.ibm.com/developerworks/websphere/techjournal/1305_gunderson/1305_gunderson.html

最新版本的IBM WebSphere Application Server提供对JAX-RS的支持.WebSphere Application Server V8.5支持内置的JAX-RS; 无需额外安装.

http://www-01.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.nd.iseries.doc/ae/twbs_jaxrs_devenv.html?cp=SSAW57_8.5.5%2F2-13-2- 38-1-1&郎= EN

要开发JAX-RS应用程序,必须将JAX-RS库添加到类路径定义中.请参阅组装工具的信息,以了解如何在JAX-RS应用程序的类路径中包含库.

在WebSphere 8.5上运行JAX-RS需要做些什么.是否需要web.xml映射?是否需要其他库文件?

java websphere jax-rs

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

如何在JQuery中将输入文本字段交换到焦点上的密码区域?

我想在密码区域中显示"密码"作为文本,并且当聚焦时,该框应该变为空并允许来自用户的正常密码(加星标)输入.

目前我使用以下方法.最初我显示一个显示密码的文本字段,当焦点被删除并替换为密码字段时.这是jQuery:

$(document).ready(function() {
    $("#password").focus( function() {
        $("#pwd").html('<input type="password" id="password" name="password" value="" />');
        $("#password").focus();
    });
});
Run Code Online (Sandbox Code Playgroud)

这适用于Firefox和Chrome,但在IE 8(可能是其他IE)中失败,因为焦点调用由于某种原因失败(可能DOM没有准备好?).

jsbin上有一个演示版.

有任何想法吗?

html javascript jquery

6
推荐指数
1
解决办法
3124
查看次数

如何在java中合并两个复杂对象

我有两个java对象,我想将它们合并到单个对象中.问题是两个对象不包含普通原始类型属性(字段),它们包含复杂类型属性(如其他类型的对象和其他类型的对象列表).

对象1:通过设置一些属性(字段)和返回

对象2:通过设置一些属性(字段)返回,或者它可以返回它所拥有但不被对象1返回的类型的新对象.

对象1和对象2都是相同类型的.

结果对象3 = obj1属性+如果类型与obj1相同,则更新obj 2中的属性+来自obj2的新更新对象

java merge

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

在浏览器上通常安装了哪些Java版本,可以安全地假设1.4?

是否有关于大多数人在WWW上使用的Java版本的网站/分析?似乎这些数据在网络服务器日志中不可用(与Flash版本相比)

我们可以安全地将Java 1.4.2设置为我们的applet的最低要求,还是有许多用户使用Java 1.1(MS one)或Java 1.2-1.3?

如果它太旧了,那么更新Java仍然是一个复杂的过程,例如Windows机器上需要管理员权限,而且在某些Linux发行版中也很难.

java applet jvm version

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

Hibernate映射 - "无法确定类型"

我目前成功保持以下对象:

  • 人名等
  • 考试题目,日期等

我现在想创建第三个表格考试结果.对于这个表,我认为它应该是人员ID,考试ID和结果,这是一个多对多的关系.

@Entity
public class ExamResult {
    private Exam exam;
    private Person person;
    private double value;

    @Id
    @ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
    @JoinColumn(name="EXAM_ID")
    public Exam getExam() {
        return exam;
    }
    public void setExam(Exam exam) {
        this.exam = exam;
    }

    @Id
    @ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
    @JoinColumn(name="PERSON_ID")
    public Person getPerson() {
        return person;
    }
    public void setPerson(Person person) {
        this.person = person;
    }

    public double getValue() {
        return value;
    }
    public void setValue(double …
Run Code Online (Sandbox Code Playgroud)

java hibernate hibernate-annotations

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

ejb 3.1中的定时服务 - 调度超时问题

我用@Singleton,@ Schedudu和@Timeout注释创建了一个简单的例子来试试它们是否可以解决我的问题.

场景是这样的:EJB每5秒调用一次'check'函数,如果满足某些条件,它将创建单个动作计时器,以异步方式调用一些长时间运行的进程.(这是一种队列实现类型的东西).然后它继续检查,但是在长时间运行的过程中,它不会启动另一个.

下面是我提出的代码,但是这个解决方案不起作用,因为它看起来像我正在制作的异步调用实际上阻止了我的@Schedule方法.

@Singleton
@Startup
public class GenerationQueue {

    private Logger logger = Logger.getLogger(GenerationQueue.class.getName());

    private List<String> queue = new ArrayList<String>();

    private boolean available = true;

    @Resource
    TimerService timerService;

    @Schedule(persistent=true, minute="*", second="*/5", hour="*")
    public void checkQueueState() {

        logger.log(Level.INFO,"Queue state check: "+available+" size: "+queue.size()+", "+new Date());

        if (available) {

            timerService.createSingleActionTimer(new Date(), new TimerConfig(null, false));
        }

    }

    @Timeout
    private void generateReport(Timer timer) {

        logger.info("!!--timeout invoked here "+new Date());

        available = false;

        try {

            Thread.sleep(1000*60*2); // something that lasts for a bit

        } …
Run Code Online (Sandbox Code Playgroud)

java schedule timer glassfish

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