小编Gab*_*uiu的帖子

使用PdfBox,如何将PDDocument的内容检索为字节数组?

我目前正在使用PdfBox作为pdf文件编辑器应用程序的驱动程序.我需要pdf文件(PDDocument)的PdfBox表示的内容作为字节数组.有谁知道如何做到这一点?

java pdfbox

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

Resteasy-Spring:在具有多个运行实例的测试期间加载了错误的应用实例

问题简短摘要:

我编写了一个简单的REST HTTP接口,使用Spring Boot构建,在调用时返回一个简单的文本响应GET /app,基于其实现ClientInterface,其中有2个.REST功能是使用JAX-RS实现的,由resteasy通过RestEasy-SpringBoot库.

我还编写了3个测试,其中第3个失败,因为响应来自第二个实现,ClientInterface而不是第一个实现,因为(我假设)Resteasy混合了应用程序实例,因此错误的Spring Application上下文是使用错误的bean加载.

注意:您可以在此处找到示例应用程序,其中还包括文档

请查看源代码以获得清晰的图片.它也会占用太多空间来粘贴代码.

更多细节:

有两个实现ClientInterface提供REST资源给出的响应.使用client-impl-two配置文件切换它们.如果配置文件不存在,则使用第一个实现,如果存在,则使用第二个实现.

一个第三个测试期望第一个实现的响应,第二个测试期望秒实现的响应,因为它正在使用client-two-impl配置文件.

当我使用IntelliJ的JUnit集成运行测试时,第三个失败: 在此输入图像描述 在此输入图像描述

您会注意到测试被命名为强制执行某个执行顺序,这是相关的,因为第三个测试仅在第二个测试执行后才会失败.并且它失败了,因为它得到了第二个ClientInterface实现的响应,即使第三个测试不使用client-impl-two配置文件.

到目前为止我做了/发现了什么:

  • 有时,运行./mvnw clean test也有相同的错误结果,但我无法提供可重现的示例
  • Spring/Spring Boot正确加载了Spring Application上下文
  • Spring Boot正确地注入端口号,测试中的其余客户端总是调用它们应该的REST实例
  • 只有当Resteasy接管请求时,它才会以某种方式加载应用程序的错误实例,因此使用了错误的Spring Application上下文,这就是为什么它会给出不正确的响应
    • 我通过在SpringResourceFactory.createResource()中保留一个断点来解决这个问题,它只是beanFactory对资源bean进行querynig ,并调用beanFactory.getBean(ClientInterface.class)以查看哪个实现出现了,并且对于第三个测试它是不正确的
  • 在测试期间,有多个应用程序运行实例,每个实例都在自己的端口上,我认为这个问题与问题有关
  • 还有另一个分支,jersey-instead-of-resteasy其中Jersey被用作JAX-RS实现,并且无论是使用IntelliJ还是使用Maven运行测试都是成功的
  • 有一个DebugFilter与我检查Spring应用程序上下文的样子是由RestEasy的servlet的接管请求之前,它始终是正确的(正确执行的ClientInterface加载),无论测试如何执行 …

spring intellij-idea resteasy spring-boot

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

无法连接到运行MySQL的端口转发Pod

我有以下部署了MySQL实例:

kind: Deployment
apiVersion: apps/v1beta1
metadata:
  name: mysql
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:8
        ports:
        - containerPort: 3306
        env:
          - name: MYSQL_ROOT_PASSWORD
            valueFrom:
              secretKeyRef:
                name: mysql-root-password
                key: password
Run Code Online (Sandbox Code Playgroud)

密码是root

kind: Secret
apiVersion: v1
metadata:
  name: mysql-root-password
type: Opaque
data:
  password: cm9vdA==
Run Code Online (Sandbox Code Playgroud)

问题是我按照此处的指示尝试在端口转发MySQL端口后连接到实例,但出现错误:

$ kubectl port-forward mysql-824284009-rpbpk 3306
Forwarding from 127.0.0.1:3306 -> 3306
Forwarding from [::1]:3306 -> 3306

# from another terminal
$ mysql -u root -p
Enter …
Run Code Online (Sandbox Code Playgroud)

mysql kubernetes

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