我有一个JAX-RS Web服务,其中包含用于生成测试数据的资源。在测试期间,我发现,注入的EJB没有重新初始化,仍然包含来自上一个请求的数据。
我有一个jar文件
server.jar
包含我的EJB业务逻辑。为了显示我的问题,我创建了一个无状态bean:
@Stateless
public class TestService
{
@EJB
SubsequentTestService state2Service;
private String value;
public void testIt()
{
System.out.println("####### VALUE: " + value);
value = "TestValue";
state2Service.testIt();
}
}
我正在使用后续呼叫
SubsequentTestService
以显示调用另一个无状态EJB时也存在奇怪的行为:
@Stateless
public class SubsequentTestService
{
private String value;
public void testIt()
{
System.out.println("####### VALUE2: " + value);
value = "TestValue2";
}
}
更改注释形式
@EJB
到
@Inject
不会改变任何东西。
在我的
web.war
我有简单的JAX-RS bean。被调用以显示奇怪行为的定义如下:
@Path("/test")
public class TestResource
{
@Inject
TestService testService;
@GET
@Path("/state")
public void testState()
{
testService.testIt();
}
}
JAX-RS应用程序配置如下所示:
@ApplicationPath("/api")
public class JaxRsConfiguration extends Application
{
}
war文件包含bean。xml,但没有其他配置文件。所有内容都打包到一个ear文件中,并在wildfly 10.0.0.Final中部署。如果我通过GET请求调用Web服务
http://localhost:8080/api/test/state
我得到了预期的输出:
INFO[stdout](默认任务-7)#####值:null
INFO[stdout](默认任务-7)#####值2:null
但在第二个请求中,我得到了以下意外输出:
信息[stdout](默认任务-8)#####值:测试值
信息[stdout](默认任务-8)#####值2:测试值2
我的问题是什么?在苍蝇身上可能有什么错误的配置?但我只更改了日志记录和数据源定义。