小编Ral*_*lph的帖子

如何为JUnit测试设置日志级别

我在类中使用Java登录。

例:

public class MyClass  {
    private static Logger logger = Logger.getLogger(MyClass.class.getName());
    ....
}
Run Code Online (Sandbox Code Playgroud)

当我为该类编写JUnit测试时,我想将Loglevel设置为'FINE'。我试过了:

@Before
public void setup() throws PluginException {
    Logger.getGlobal().setLevel(Level.FINE);
    ....
}
Run Code Online (Sandbox Code Playgroud)

但这没有效果。使用Java日志记录时,如何在JUnit测试中控制日志级别?我正在使用Maven运行测试。

java logging junit java.util.logging maven

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

为什么我的traefik.toml文件不能通过docker-compose配置读取

我的目标是通过基本身份验证来保护traefik前端.

我在Docker容器中运行建于2017-11-14.11:14:24 AM的Traefik版本v1.4.3.

我的docker-compose.yml文件如下所示:

version: "3"

services:
  proxy:
    image: traefik
    command: --web --docker --docker.domain=docker.localhost --logLevel=DEBUG
    ports:
      - "80:80"
      - "8081:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ~/git/traefik/traefik.toml:/etc/traefik/traefik.toml
      - ~/git/traefik/.htpasswd:/etc/traefik/.htpasswd

networks:
  default:
    external:
      name: my_nw
Run Code Online (Sandbox Code Playgroud)

我的traefik.toml文件中的Web前端部分如下所示:

 ....
 # Enable web configuration backend
 [web]
 address = ":8080"
 [web.auth.basic]
 usersFile = "/etc/traefik/.htpasswd"
 ...
Run Code Online (Sandbox Code Playgroud)

但我的自定义traefik.toml文件似乎不是由traefik mountet /读取 - 仍然没有traefik前端需要的身份验证.

调试日志输出如下所示:

$ docker-compose up
Starting traefik_proxy_1
Attaching to traefik_proxy_1
proxy_1  | time="2017-11-20T07:30:10Z" level=info msg="Using TOML configuration file /etc/traefik/traefik.toml" 
proxy_1  | time="2017-11-20T07:30:10Z" level=info msg="Traefik version v1.4.3 built on …
Run Code Online (Sandbox Code Playgroud)

traefik

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

为什么Docker Secrets被认为是安全的?

我读到了有关码头群的秘密,并做了一些测试.据我所知,秘密可以替换docker-compose.yml文件中提供的敏感环境变量(例如数据库密码).因此,当我检查docker-compose文件或正在运行的容器时,我将看不到密码.那很好 - 但它真的有用吗?

如果攻击者在我的docker主机上,他可以轻松查看/ run/secrets

docker exec -it df2345a57cea ls -la /run/secrets/
Run Code Online (Sandbox Code Playgroud)

并且还可以查看里面的数据:

docker exec -it df27res57cea cat /run/secrets/MY_PASSWORD
Run Code Online (Sandbox Code Playgroud)

同一个攻击者大多可以在正在运行的容器上打开一个bash,看看它是如何工作的....

此外,如果攻击者在容器本身上,他可以环顾四周.

所以我不明白为什么docker机密更安全,好像我把它们直接写入docker-compose.yml文件?

security docker docker-secrets

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

如何在 Kubernetes 中找到正确的 api 版本?

我有一个关于 Kubernetes 中 apiVersion 的使用的问题。

例如,我正在尝试将 traefik 2.2.1 部署到我的 kubernetes 集群中。我有一个 traefik 中间件部署定义,如下所示:

---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: https-redirect
spec:
  redirectScheme:
    scheme: https
    permanent: true
    port: 443
Run Code Online (Sandbox Code Playgroud)

当我尝试使用以下方式部署我的对象时

$ kubectl apply -f middleware.yaml
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

unable to recognize "middleware.yaml": no matches for kind "Middleware" in version "traefik.containo.us/v1alpha1"
Run Code Online (Sandbox Code Playgroud)

同一个对象在 Traefik 2.2.0 版本中工作正常,但在 2.2.1 版本中则不行。

在 traefik 文档中,没有其他使用版本“traefik.containo.us/v1alpha1”的示例

我不认为我的部署问题是 traefik 特有的。这是版本冲突的普遍问题。有什么方法可以确定我的集群环境支持哪些 apiVersions?

有很多过时的示例使用已弃用的 apiVersions 发布,我想知道 kubernetes 是否有某种官方 apiVersion 目录?或者也许有一些 kubectl 命令我可以询问 apiversions?

kubernetes traefik

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

微服务 - 如何解决安全性和用户身份验证?

有关微服务架构的讨论很多.我缺少的 - 或者我可能还没有理解的是,如何解决安全性和用户身份验证的问题?

例如:我开发了一个微服务,它为工作流引擎提供Rest服务接口.该引擎基于JEE,可在GlassFish或Wildfly等应用程序服务器上运行.工作流引擎的核心概念之一是,每个调用都是以用户为中心的.这意味着根据当前用户的角色和访问级别,工作流引擎生成单独的结果(例如,以用户为中心的任务列表或处理打开的任务,这取决于过程中的用户角色).

在我看来,无法从任何地方访问服务.例如,如果有人计划实现一个基于Ajax的现代JavaScript应用程序,该应用程序应使用工作流程微服务,则存在两个问题:

1)为了避免JavaScript/Ajax的跨脚本问题,需要在与微服务运行相同的域下部署JavaScript Web应用程序

2)如果微服务强制进行用户身份验证(在我的场景中就是这种情况),则应用程序需要提供透明的身份验证机制.

如果客户端需要访问多个以用户为中心的微服务来强制进行用户身份验证,则情况会变得更加复杂.我总是最终得到一个架构,其中所有服务和客户端应用程序在同一域下的同一应用程序服务器上运行.

如何解决这些问题?这种架构的最佳实践是什么?

authentication java-ee microservices

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

Maven安装:? - 如何创建候选版本?

是否可以在不更改pom.xml中的版本号的情况下从我当前的maven项目创建候选版本?

我只想在我的项目中使用特定的版本号构建一个新的maven工件.

例如:我当前的pom.xml版本为'0.0.1'.我已经打电话mvn install在我的本地存储库中创建工件.现在我想用版本'0.0.1-RC1'创建第二个工件

这可能来自mvn命令行而不更改我的pom.xml中的版本号吗?

maven

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

什么是JSF托管bean和无状态EJB的最佳模式

您认为实现关于会话范围与请求范围的JSF托管bean的最佳方法是什么?在我的例子中,我有一个带有EJB模块和Web模块的EAR应用程序.EJB模块提供无状态会话bean.在Web模块中,我现在在sessionScope中使用ManagedBean.这个bean注入一些staeless会话ejbs并保存一些包含业务数据的值对象,这些对象可以在不同的页面中使用.

@Named("workflowController")
@SessionScoped
public class WorkflowController {
    private List<ItemCollection> someList;
    private ItemCollection someBusinessData;
    /* Services */
    @EJB
    private MyService myService;
Run Code Online (Sandbox Code Playgroud)

bean为前端提供了许多动作方法,并使用无状态会话bean.这是一般的好习惯吗?或者我应该更改我的控制器以请求范围?我见过只在RequestScoped中使用前端控制器的项目,并将所有业务Data对象注入managedProperties,在SessionScope中实现为ManagedBeans.

在我的示例中,我在SessionScope中只有一个控制器,它包含所有业务值并提供在无状态ejbs中实现的业务方法.在另一种情况下,在RequestScopde中使用一个控制器,并且在SessionScope中将许多BusinessValue对象实现为MangedBeans,这些对象被注入到控制器bean中.

我的问题是:将Session EJB注入SessionScope Managed bean一般是不好的做法吗?

jsf ejb managed-bean

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

如何在 OpenLiberty 中为单个文件激活热部署?

我已经安装了 openLiberty 20.0.0,我想激活 hotdeployment。为此,我将 applicationMonitor 标记添加到 server.xml

<applicationMonitor updateTrigger="polled" pollingRate="500ms"
                dropins="dropins" dropinsEnabled="true"/>
Run Code Online (Sandbox Code Playgroud)

但这些似乎已经是默认值。所以也许我可以离开它。

我还添加了 autoExpand 功能

<applicationManager autoExpand="true" />
Run Code Online (Sandbox Code Playgroud)

现在,当我将 .war 文件部署到 dropins 文件夹中时,openLiberty 会自动识别该应用程序并立即部署。到目前为止这很好。

但据我所知,还应该在我正在运行的应用程序中识别和更新单个源文件(例如 .html、.xhtml.)的热部署,而无需完全重新部署。

例如,如果我更改应用程序文件夹中的单个 jsf 文件

./dropins/myapplication.war/my-page.jsf
Run Code Online (Sandbox Code Playgroud)

没发生什么事。我错过了什么让 OpenLiberty 也识别出这个小的文件更改?

open-liberty

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

如何将 spaCy 公开为 REST API?

我有兴趣将 spaCy python 库用于我自己的开源项目。我正在寻找的是基于 REST 的 API。通过公共 REST 接口公开 spaCy API 有什么必要或推荐的方法是什么?我已经查看了spaCy 服务和来自jgontrumspacy-api-docker 项目。但似乎没有可用的官方 REST API,每个人都必须自己做。如果是这样,将 python spaCy 方法/脚本包装到 REST API 中的最佳方法是什么?似乎是这样的框架猎鹰拥抱烧瓶帮我做这个。

但是,这是使用这些框架之一编写我自己的 REST API 服务器的推荐方法,还是我已经监督过并且 spaCy 已经通过 REST API 接口可用?

python rest spacy

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

如何将 Kubernetes 非 HA 控制平面转换为 HA 控制平面?

将 kubernetes 非 HA 控制平面转换为 HA 控制平面的最佳方法是什么?

我首先将集群作为非 HA 控制平面 - 一个主节点和多个工作节点。该集群已经运行了很多服务。

现在我想添加额外的主节点以将我的集群转换为 HA 控制平面。我已经设置并配置了负载平衡器。但我不知道如何将 -control-plane-endpoint 更改为现有主节点的负载均衡器 IP 地址。

调用 kubeadm 会导致以下错误:

sudo kubeadm init --control-plane-endpoint "my-load-balancer:6443" --upload-certs
[init] Using Kubernetes version: v1.20.1
[preflight] Running pre-flight checks
    [WARNING SystemVerification]: missing optional cgroups: hugetlb
error execution phase preflight: [preflight] Some fatal errors occurred:
    [ERROR Port-6443]: Port 6443 is in use
    [ERROR Port-10259]: Port 10259 is in use
    [ERROR Port-10257]: Port 10257 is in use
    [ERROR FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml]: /etc/kubernetes/manifests/kube-apiserver.yaml already exists
    [ERROR FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml]: …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubeadm

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