我正在使用maven/surefire/eclipse编写一些代码,然后再进行测试/调试.
标准方法是使用maven.surefire.debug maven属性.默认情况下,启用此属性后,maven将开始侦听端口5005,并且我可以使用远程调试器附加到已调试的进程.当测试完成远程调试器与服务器的连接时.
在eclipse中使用时,此过程涉及两个步骤:
我想要实现的是将其减少为:
我发现,将maven.surefire.debug属性设置为某些远程调试选项将改变远程调试行为.因此,当我指定ie
-Dmaven.surefire.debug =" - Xdebug -Xrunjdwp:transport = dt_socket,server = n,address = 5005"
然后build将尝试连接到我的eclipse进程,监听端口5005.这样我就可以反转maven和eclipse的默认客户端/服务器角色.
然而,这种方法存在一个大问题.它没有给我任何东西,因为在maven构建完成后,eclipse停止在服务器端口上侦听.这是我不理解的部分.当我作为调试客户端从eclipse连接到例如WebLogic服务器时,它允许我根据需要自由连接/断开连接.
任何人都知道这是否正常,或者我是否需要指定一些额外的选项来使调试maven测试更容易?
我们试图解决的问题看起来像这样.
我们的解决方案是为卡分配状态,并存储它的预订日期.在预订卡时,我们使用"select for update"语句来完成.该查询查找可用的卡和很久以前保留的卡.
但是,我们的查询无法正常工作.
我准备了一个简化的情况来解释这个问题.我们有一个card_numbers表,充满了数据 - 所有行都有非空的id号.现在,让我们试着锁定其中一些.
-- first, in session 1
set autocommit off;
select id from card_numbers
where id is not null
and rownum <= 1
for update skip locked;
Run Code Online (Sandbox Code Playgroud)
我们不在此处提交事务,必须锁定行.
-- later, in session 2
set autocommit off;
select id from card_numbers
where id is not null
and rownum <= 1
for update skip locked;
Run Code Online (Sandbox Code Playgroud)
预期的行为是,在两个会话中,我们得到一个满足查询条件的不同行.
但是它不起作用.取决于我们是否使用查询的"跳过锁定"部分 - 行为更改:
因此,经过这么长时间的介绍就会出现问题.
Oracle中可能存在所需的锁定行为吗?如果是,那么我们做错了什么?什么是正确的解决方案?
我正在使用maven-jetty-plugin来快速运行和调试我在Eclipse/m2eclipse下开发的WebApp.它开始正常,我可以完全使用调试器,但我不能优雅地停止应用程序.
当我在控制台视图中执行ctrl + c时它虽然在启动器配置中启用了"allocate console",但它什么也没做.
在简单的java项目中,ctrl + c选项工作正常(在Windows上测试).所以它似乎是一些远程/嵌入式jvm问题.我的应用程序使用持久性JMS队列,因此每次重启后我都需要手动终止其他服务器上的会话.这不是很敏捷.
任何人都知道问题的根源是什么?或者也许有一些已知的解决方法?