小编Mar*_*ark的帖子

Cobertura排除vs忽略

我在cobertura-maven-plugin中看到,我可以使用excludes和配置我的仪器ignores.这两者有什么区别?

cobertura

12
推荐指数
3
解决办法
7462
查看次数

如何使用Reactor的StepVerifier来验证Mono是否为空?

StepVerifier用来测试值:

@Test
public void testStuff() {
    Thing thing = new Thing();
    Mono<Thing> result = Mono.just(thing);
    StepVerifier.create(result).consumeNextWith(r -> {
        assertEquals(thing, r);
    }).verifyComplete();
}
Run Code Online (Sandbox Code Playgroud)

我现在要做的是测试单声道中没有项目.像这样:

@Test
public void testNoStuff() {
    Mono<Thing> result = Mono.empty();
    StepVerifier.create(result)... // what goes here?
}
Run Code Online (Sandbox Code Playgroud)

我想测试Mono实际上是空的.我怎么做?

java unit-testing reactive-programming project-reactor

10
推荐指数
2
解决办法
3123
查看次数

从 Helm 图表生成 docker-compose.yaml

我对从 Helm 图表生成 docker-compose.yaml 文件感兴趣。有没有好的方法或工具来做到这一点?

我意识到这与大多数人所做的相反。为什么我想这样做:

  1. 我们的生产系统通过 Helm 图表运行 Kubernetes。我们已经有了完整的 k8s 和 Helm 设置;不需要使用像 Kompose 这样的工具来帮助我们实现这一目标。问题是如何将 Helm 转换为 docker-compose,而不是相反。
  2. 我们希望 Helm 图表成为容器配置的唯一权威来源。他们能够描述 docker-compose 的超集。
  3. 在开发机器上使用 Helm 运行一组服务比通过 docker-compose 运行同一组服务更耗费时间和资源。我们不想让工程师使用 Helm/k8s 来减慢开发速度。
  4. 我们不想维护两套配置。

任何人都可以建议如何执行此操作,或者针对开发计算机上遇到的时间/资源问题提出不同的解决方案吗?

kubernetes docker-compose kubernetes-helm

9
推荐指数
0
解决办法
3268
查看次数

如何远程调试附加版本 &gt; 8 中的 Keycloak

我最近将 Keycloak 升级到版本 9,在 Docker 中运行时,我在附加远程调试器时遇到问题。我怀疑这与Keycloak底层升级到Java 9+有关。

我得到的错误是:

handshake failed - connection prematurally closed

我在 Docker 中正确映射了端口(我可以运行 Keycloak 版本 7 并且它连接得很好)。

debugging keycloak

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

如何使用 Liquibase 有条件地将主键添加到数据库表?

我需要制作一个 Liquibase 迁移脚本,仅当尚未添加主键时才将主键添加到数据库表中。这样做的最佳方法是什么?它会是这样的:

<changeSet id="...">
  <preConditions>
    (What goes here? Should I use <sqlCheck>, or is there a better alternative?)
  </preConditions>
  <addPrimaryKey tableName="foo" columnNames="bar" constraintName="foo_pk" />
</changeSet>
Run Code Online (Sandbox Code Playgroud)

liquibase

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

如何对Reactor Flux流中的值求和?

假设我有一个存储库,其中包含一个findAll()返回Iterableof 的方法State,其中State一个类表示一个具有两个字段(带有getter/setter)的US状态:namepopulation.

我想得到State我的Flux中所有s 的总体字段的总和.我从Iterable创建一个Flux,如下所示:

Flux f = Flux.fromIterable(stateRepo.findAll());
Run Code Online (Sandbox Code Playgroud)

我有我的Flux,但我不知道总结其价值的好方法.我尝试过类似的东西

int total = 0;
f.map(s -> s.getPopulation()).subscribe(p -> total += v);
return total;
Run Code Online (Sandbox Code Playgroud)

但是,编译器说总的"应该是最终的或有效的最终".添加final显然不起作用,因为我正在尝试添加它.

如何在Flux上进行求和(或任何其他聚合函数)?

java reactive-programming project-reactor

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

如何使用千分尺计时器记录异步方法的持续时间(返回Mono或Flux)

我想使用Micrometer记录异步方法最终发生时的执行时间。有推荐的方法吗?

示例:Kafka回复模板。我想记录实际执行sendAndReceive调用(在请求主题上发送消息并在回复主题上接收响应)所花费的时间。

    public Mono<String> sendRequest(Mono<String> request) {
        return request
            .map(r -> new ProducerRecord<String, String>(requestsTopic, r))
            .map(pr -> {
                pr.headers()
                        .add(new RecordHeader(KafkaHeaders.REPLY_TOPIC,
                                "reply-topic".getBytes()));
                return pr;
            })
            .map(pr -> replyingKafkaTemplate.sendAndReceive(pr))
            ... // further maps, filters, etc.
Run Code Online (Sandbox Code Playgroud)

就像是

responseGenerationTimer.record(() -> replyingKafkaTemplate.sendAndReceive(pr)))
Run Code Online (Sandbox Code Playgroud)

在这里不会工作;它仅记录创建所需的时间Supplier,而不是实际的执行时间。

asynchronous reactive-programming spring-kafka micrometer

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

使用外部登录页面的 Spring Security OAuth2 登录

我想知道是否可以将 Spring Security 配置为在 OAuth 登录过程中使用外部托管的登录页面。没关系,这不是一个好主意,并且违背了 OAuth 的目的之一(将登录/凭据/身份验证问题与客户端和资源服务器分开)。

我有以下设置:

  • 客户端 SPA 应用程序,我要使用的登录页面位于其中
  • OAuth Auth 服务器(使用 Spring Security OAuth / @EnableAuthorizationServer
  • 一台或多台 OAuth 资源服务器

我寻求的OAuth流程如下:

  • 用户尝试访问 SPA 中的安全路由
  • 客户端将用户重定向到OAuth服务器的授权页面(参数包括状态、随机数等)
  • OAuth 服务器未检测到令牌并重定向到 SPA 的登录页面
  • 用户登录;发布到登录 url(登录 url 位于 OAuth 服务器上;需要 CORS 配置以允许从 SPA 到 OAuth 服务器的跨源发布)
  • 登陆成功; Spring使用最初存在的参数重定向到最初请求的授权页面
  • 授权重定向到令牌;用户获得令牌;SPA 检测到用户现在拥有令牌并允许访问安全路由

我可以配置 Spring Security 来指定绝对 URL,以便重定向到 SPA 的登录页面:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.cors()
        .and()
        ... config ...
        .and()
        .formLogin()
        .loginPage("http://angular-spa-app/login") 
        .loginProcessingUrl("/login")
        .permitAll();
}
Run Code Online (Sandbox Code Playgroud)

当我完成此流程时,我看到第一个请求发送到oauth/authorize?state=...&nonce=...&etc...,然后重定向到http://angular-spa-app/login。但是当我登录时,Spring …

java spring-security spring-security-oauth2

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

使用 openapi-generator 生成客户端时如何覆盖服务器 -&gt; url (basepath)?

我有一个包含以下代码段的 OpenAPI 规范文档(我无法控制):

servers:
  - url: http://www.[someservice].com/api
Run Code Online (Sandbox Code Playgroud)

我正在使用这个 OpenAPI 文档来生成我在我的 Angular SPA 中使用的 typescript-angular 客户端。当我在生产中运行它时,这很好用(我的 api 后端可以通过提供的 url 访问)。

我想使用http://localhost:1234/api进行本地测试。如何使用 openapi-generator 覆盖基本路径,以便我可以生成在本地工作的客户端代码?

openapi-generator

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

根据身份提供商令牌中存在的数据更新 Keycloak 用户数据

我正在将 Keycloak 作为身份代理运行,并配置了一个身份提供程序。

当具有来自 IdP 的有效令牌的用户首次访问我的应用程序时,系统会使用令牌中的信息在 Keycloak 中创建该用户。这包括电子邮件、用户名、名字和姓氏。然后,Keycloak 会使用该用户信息发出其令牌。

当同一用户随后登录时,Keycloak 令牌是根据 Keycloak 数据库中的用户信息制作的。

我的问题是:如果用户在 IdP 上更改了姓氏,如何配置 Keycloak 自动更新其记录以匹配 IdP 令牌上的信息?

keycloak

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

智真命令弹出大使云登录窗口

由于某种原因,当我运行一些网真命令时,会弹出一个浏览器窗口,提示我登录大使云。但我没有使用大使云。

除了浏览器窗口之外,该命令还显示一条消息来说明这一点。像这样:

~ % telepresence intercept my-k8s-service
Launching browser authentication flow...
Run Code Online (Sandbox Code Playgroud)

我如何禁用此功能?

ambassador telepresence

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

地图行为的 Spring 自动装配

我的问题是关于 Spring 如何java.util.Map通过@Autowired. 具体来说,我看到的行为是类中自动装配的 bean 的值实际上是一个包含一个键值对的 Map,其中键是 bean 的名称,值是我打算注射。我预计 Spring 会直接注入地图。

这是我自动装配 bean 的类:

@Component
public class SpringMapParent {
    @Autowired
    @Qualifier("theMap")
    private Map<String, Object> theMap;

    ...
}
Run Code Online (Sandbox Code Playgroud)

theMap在 Spring Java 配置中定义如下:

@Configuration
@ComponentScan
public class SpringMapConfiguration {

    @Bean("theMap")
    public Map<String, Object> getTheMap() {
        Map<String, Object> theMap = new HashMap<String, Object>();
        return theMap;
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

请注意,地图大小为 0。

我用于测试此注入的单元测试失败:

@ContextConfiguration(classes = {SpringMapConfiguration.class})
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringMapIT {

    @Autowired
    private SpringMapParent springMapParent;

    @Test
    public void testSpringMapParentAutowiredCorrectly() …
Run Code Online (Sandbox Code Playgroud)

java spring dependency-injection

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

自定义 Keycloak 端点上的 CORS

我创建了一个自定义 Keycloak 端点(使用自定义领域资源提供程序工厂)。我可以使用 Postman 发布到此端点,并且它按预期工作。当我尝试从我的 SPA(Angular)应用程序发布到它时,我收到 CORS 错误。

我的 Web 源在我的 Keycloak 客户端配置中配置正确。但这些似乎不适用于我的自定义端点。

如何配置端点以允许跨源 POST?

cors keycloak

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