小编use*_*547的帖子

在java中可以进行"原子"中断检查吗?

如果在Java中使用以下"idiom",例如从这个答案.

while (!Thread.currentThread().isInterrupted()) {
    try {
        Object value = queue.take();
        handle(value);
    } catch (InterruptedException e) {
        Thread.currentThread().interrupt();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果take是一个阻塞操作,如果在检查Thread.currentThread().isInterrupted()和呼叫之间有一个中断"到达",那么暂时不能忽略一个中断queue.take()吗?这不是"检查而非行动"的操作吗?如果是这样,如果线程被中断,它是否可以保证在任何情况下都保留循环?

可以使用 带超时的轮询,以便在超时后保留循环,但是是否可以检查中断状态并以原子方式对其进行操作?

java concurrency multithreading interrupt

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

Nginx - 使用 try_files 时如何为 index.html 添加标头

我有以下配置(对于 Angular 应用程序):

location / {
    try_files $uri /index.html;
    add_header "Cache-Control" "no-cache" ;
}
Run Code Online (Sandbox Code Playgroud)

现在我想仅为index.html,但不为任何其他文件添加该标头。怎么做?

nginx cache-control http-headers

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

在没有重启的IDE中使用Wildfly Swarm进行开发 - 在某处"热部署"?

我对Wildfly Swarm项目感兴趣,以创建fat-jar JavaEE应用程序,但无法弄清楚如何从IDE"热部署"更改的类.

每当我更改一行代码或JSF xhtml文件时,我当前必须重新启动整个应用程序需要大约7秒左右.那不是很有成效.

Spring Boot提供了一个spring-boot-devtools,可以重新加载至少一些类,传统的应用服务器提供热部署协议.Wildfly Swarm还有类似的东西吗?JRebel会帮忙吗?

ide java-ee wildfly wildfly-swarm

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

如何使用Java 9流接口/将它们包含在Java 9中的重点是什么?

首先,我必须说我对反应式编程没有多少经验.

由于JDK 9(Flow及其嵌套接口)中只有少数接口,因此JDK 9显然不包含像RxJava这样的反应库.

在Javadoc,有对的implentations一些例子Publisher,SubscriptionSubscriber.但这些似乎相当低级,没有任何反应操作员或处理背压.

那么将这些接口包含在JDK中有什么意义呢?

反应库的供应商是否应该使用它们,以便那些Java实现(如RxJava)使用一组通用的接口?(类似于JPA和Hibernate?)

java reactive-programming rx-java java-9

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

在 JAX-RS Provider 中使用 @Context 向 CDI bean 提供上下文信息

我有一些网络服务(JAX-RS、WildFly 9、Resteasy)

@RequestScoped
public class SomeService{
// operations
}
Run Code Online (Sandbox Code Playgroud)

现在我想提取上下文信息,例如用户代理,这可以使用

@Context
private HttpHeaders httpHeaders;
Run Code Online (Sandbox Code Playgroud)

似乎只能在 JAX-RS 相关类中注入此上下文,但不能在 Web 服务调用的 CDI bean 中注入。可以将其放入 Web 服务中,但这会使服务与与服务的核心响应无关的内容变得混乱。

经过一番搜索,我最终使用了javax.ws.rs.ext.Provider注释。看起来生成的ContextInformation对象可以在其他 CDI-bean 中使用,而不仅仅是在 JAX-RS bean 中。

@Provider
public class ContextInformationProducer {
    @Produces
    @RequestScoped
    public ContextInformation create() {
        ContextInformation contextInformation = new ContextInformation();
        contextInformation.setBrowserUserAgent(httpHeaders.getHeaderString("User-Agent"));
    }
Run Code Online (Sandbox Code Playgroud)

问题是这是否是好的做法?或者这只是巧合?如果这不是好的做法,我怎样才能以更好的方式做到这一点?查看JAX-RS 中的 Provider 是什么意思?,我不确定我是否在“扩展和定制 JAX-RS 运行时”。应用程序开发人员应该使用它吗?

java jax-rs resteasy cdi wildfly

5
推荐指数
0
解决办法
1191
查看次数

在测试中用 ExecutorService 替换 ManagedExecutorService

我有一些使用 Java EE 的服务ManagedExecutorService(在 Wildfly 9 中)

public class FooService{
    @Resource
    ManagedExecutorService executorService;
}
Run Code Online (Sandbox Code Playgroud)

对于 Mockito 的测试,我想使用“正常” ExecutorService

@RunWith(MockitoJUnitRunner.class)
public class FooServiceTest{
   @Spy
   ManagedExecutorService executorService = Executors.newFixedThreadPool(5);
}
Run Code Online (Sandbox Code Playgroud)

这段代码显然无法编译,因为 anExecutorService不是ManagedExecutorService.

当使用ExecutorService在服务上,没有错误的测试运行,但随后Wildfly不能注入服务。

public class FooService{
    @Resource
    ExecutorService executorService;
}

@RunWith(MockitoJUnitRunner.class)
public class FooServiceTest {
   @Spy
   ExecutorService executorService = Executors.newFixedThreadPool(5);
}
Run Code Online (Sandbox Code Playgroud)

可以ManagedExecutorService通过委托给 a来创建a ExecutorService

@Spy
ManagedExecutorService executorService = new ManagedExecutorService() {

   ExecutorService executorService = Executors.newFixedThreadPool(5);
   @Override
   public void shutdown() {
       executorService.shutdown(); …
Run Code Online (Sandbox Code Playgroud)

java concurrency mockito wildfly jakarta-ee

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

"重用"CompletableFuture是安全/良好的做法

在试验时CompletableFuture,我想知道给定的代码是否安全.

    CompletableFuture<Integer> foo = CompletableFuture.supplyAsync(() -> 42);

    foo.thenApply((bar) -> {
        System.out.println("bar " + bar);
        return bar;
    })
    .acceptEither(foo.thenApply((baz) -> {
        System.out.println("baz " + baz);
        return baz;
    }),
    (z) -> System.out.println("finished processing of " + z));
Run Code Online (Sandbox Code Playgroud)

它有效,印刷

bar 42
baz 42
finished processing of 42
Run Code Online (Sandbox Code Playgroud)

thenApply在给定的实例上多次调用或其他方法是安全的/好主意CompletableFuture吗?

java java-8 completable-future

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

Ansible multiple包含"in block"

我有一个剧本包括:

- include: include1.yml
  when: doinclude | default('true')
- include: include2.yml
  when: doinclude | default('true')
Run Code Online (Sandbox Code Playgroud)

有没有可能不重复这个条件?我试过块,但似乎块不能在这种情况下使用:

- block:
  - include: include1.yml
  - include: include2.yml
  when: doinclude  | default('true')
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?我也尝试了类似的东西

- name: test
  hosts: all
  tasks:
    - block:
      - include: include1.yml
      - include: include2.yml
    when: doinclude  | default('true')
Run Code Online (Sandbox Code Playgroud)

这也行不通

ansible ansible-playbook ansible-2.x

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

Java8:如何使用 Stream 将 Map&lt;X, List&lt;Y&gt;&gt; 转换为 Map&lt;Y,X&gt;?

我是 Java8 的新手。我要解决的一个问题是使用 Stream 将 Map> 转换为 Map。例如:

input: {A => [B, C, D], E => [F]}
output: {B => A, C => A, D => A, F => E}
Run Code Online (Sandbox Code Playgroud)

假设 List 中没有重复值。如何在java 8流中以优雅的方式做到这一点?

干杯,魏

java java-8 java-stream

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

将 Java 14 记录用于仅具有最终字段的泛型(非数据)类

给定一个带有 final 字段的简单类,例如 a String(参见下面的示例)或 Spring 依赖项,使用 Java 14 记录使其更简洁并可能删除 Lombok 等注释处理器是个好主意吗?

根据JEP描述记录,“记录使语义声明成为其数据的简单、透明的持有者”。

显然,只有 final 字段的泛型类并不是其数据的透明持有者,并且在使用记录时,其final变量是公开的,这可能是不可取的。但是,在许多情况下,这可能不是主要问题。

因此,这是否“足以”将其视为对该语言功能的“滥用”?或者还有其他不那么明显的缺点吗?

@RequiredArgsConstructor // or an explicit constructor when not using lombok
class AudienceValidator implements OAuth2TokenValidator<Jwt> {
    private final String audience;

    public OAuth2TokenValidatorResult validate(Jwt jwt) {
        // validate
    }
}


record AudienceValidator(String audience) implements OAuth2TokenValidator<Jwt> {

    public OAuth2TokenValidatorResult validate(Jwt jwt) {
        // validate
    }
}
Run Code Online (Sandbox Code Playgroud)

java java-14 java-record

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