小编wem*_*emu的帖子

是否可以为JPA编写通用枚举转换器?

我想为JPA编写一个Converter,它将任何枚举存储为UPPERCASE.我们遇到的一些枚举不遵循惯例只使用大写字母,因此在重构之前我仍然存储未来值.

到目前为止我得到了什么:

package student;

public enum StudentState {

    Started,
    Mentoring,
    Repeating,
    STUPID,
    GENIUS;
}
Run Code Online (Sandbox Code Playgroud)

我希望"已启动"存储为"已启动"等等.

package student;

import jpa.EnumUppercaseConverter;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;

@Entity
@Table(name = "STUDENTS")
public class Student implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "ID")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long mId;

    @Column(name = "LAST_NAME", length = 35)
    private String mLastName;

    @Column(name = "FIRST_NAME", nullable = false, length = 35)
    private String mFirstName;

    @Column(name = "BIRTH_DATE", nullable = false)
    @Temporal(TemporalType.DATE) …
Run Code Online (Sandbox Code Playgroud)

java enums jpa eclipselink

24
推荐指数
3
解决办法
2万
查看次数

如何在helm的子图表中为kubernetes引用模板中定义的值?

我开始为我们的服务编写helm图表.

有两件事我不确定它们应该如何工作或者如何处理它们.

第一:发布名称.安装图表时,指定helm用于创建发布的名称.此版本名称通常在图表中引用,以便将图表安装彼此正确隔离?例如,postgres图表包含:

{{- define "postgresql.fullname" -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
Run Code Online (Sandbox Code Playgroud)

然后将其用于服务:

metadata:
  name: {{ template "postgresql.fullname" . }}
Run Code Online (Sandbox Code Playgroud)

它最终在kubernetes看起来像"myrelease-postgresql".我想知道一个好的发布名称是什么?通常用于什么?厌恶?或者像ubuntu发布的一些代号?

第二:引用值.

我的图表使用postgresql作为子图表.我想不要复制postgresql服务名称的值的创建方式(参见上面的剪辑).

有没有办法可以引用子图表的服务名称或模板定义{{template"postgresql.fullname".在父图表中?我需要它将它作为数据库主机传递给我的服务(如果我对所有内容进行硬编码,则可以正常工作,但这不是这个意思).

我试过了:

      env:
        - name: DB_HOST
          value: {{ template "mychart.postgresql.fullname" . }}
Run Code Online (Sandbox Code Playgroud)

但这会导致错误消息:

template "mychart.postgresql.fullname" not defined
Run Code Online (Sandbox Code Playgroud)

我已经看过图表的例子做类似的事情,比如odoo图表.但是在这里,复制了如何创建postgresql主机名的逻辑,并创建了模板中自己的定义.

那么有没有办法访问子图表名称?或者值或模板定义?

谢谢!

经过一些挖掘后更新: 根据Subcharts和Globals,模板在图表之间共享.

所以我能做的就是:

在我的_helpers.tpl图表中,我添加(覆盖)postgres块:

{{- define "postgresql.fullname" -}}
{{- $name := .Values.global.name -}}
{{- printf "%s-%s" …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-helm

20
推荐指数
2
解决办法
8170
查看次数

在maven生命周期中添加阶段?

我尝试在maven生命周期中添加一些额外的阶段.主要是添加一些额外的测试级别:

<phases>
    <phase>initialize</phase>
    <phase>process-resources</phase>
    <phase>compile</phase>
    <phase>process-test-resources</phase>
    <phase>test-compile</phase>
    <phase>test</phase>
    <phase>prepare-package</phase>
    <phase>package</phase>
    <phase>pre-integration-test</phase>
    <phase>integration-test</phase>
    <phase>post-integration-test</phase>
    <phase>pre-application-test</phase>
    <phase>application-test</phase>
    <phase>post-application-test</phase>
    <phase>pre-system-test</phase>
    <phase>system-test</phase>
    <phase>post-system-test</phase>
    <phase>finalize-tests</phase>
    <phase>install</phase>
    <phase>deploy</phase>
</phases>
Run Code Online (Sandbox Code Playgroud)

以上包含新的应用测试和系统测试阶段(包括前后).

我已经开始了一个测试插件:codezoo-lifecycle-maven-plugin 我用于测试的pom是在src/it文件夹中.

这似乎是新的阶段或有些发现,但有一些奇怪的事情发生:

mvn post-application-test
Run Code Online (Sandbox Code Playgroud)

这有效.还添加了我为测试添加的echo插件.但是有一些警告(使用maven 3.3.9).

mvn install
Run Code Online (Sandbox Code Playgroud)

执行跳过新阶段的默认生命周期.

如果我将生命周期的id"test-levels"更改为"default",则会执行两次阶段.

发出的警告是:

[WARNING] Duplicated lifecycle phase package. Defined in default but also in test-levels
[WARNING] Duplicated lifecycle phase pre-integration-test. Defined in default but also in test-levels
[WARNING] Duplicated lifecycle phase integration-test. Defined in default but also in test-levels
....
Run Code Online (Sandbox Code Playgroud)

发出此警告的源代码表示生命周期未正确命名空间.但我无法弄清楚这是怎么做到的.

我在网上找到了一些提示: …

maven-plugin maven maven-lifecycle

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

Maven和可选的运行时依赖项

我开始修复一个使用了maven的java项目,而我已经有了要构建的项目,在运行时它失败并缺少依赖项.我看了一下,错误是缺少包含编译时依赖项的可选依赖项.我可以通过添加这些,但在我看来,我可以拥有一切建设和运行良好只为我错过使用缺少依赖的一些代码,整个事情崩溃.

我真正想知道的是,是否有一种自动方式来查找我选择不包含的可选依赖项.我已经使用了mvn dependency:tree但这只显示了我所拥有的依赖关系(不确定它检查的范围)并且我已经尝试过mvn dependency:analyze但这似乎显示了它认为我不使用的依赖关系以及那些间接被拉下来的依赖关系.我看不到的是如何查看我不包括的选项列表.

目前我的解决方法是阅读poms并尝试从那里开始,但我不认为这特别强大.

作为参考,我对maven风格依赖管理相当新,并且就像它一样,但这个可选的东西对我来说是一个绊脚石.我理解选项会阻止我拉下我不会使用的依赖关系,但它没有点击我如何我可以锻炼哪些选项可用并且我确实需要.

我正在使用Eclipse Juno,m2Eclipse(也有maven 3.0.5 cli),java 6/7.

任何人都有任何想法,我怎么能做得更好,或者我完全忽略了什么?

java maven

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

APPARENT DEADLOCK c3p0 0.9.5.1弹簧

我们在使用c3p0 0.9.5.1(这是c3p0的最新版本)时面临APPARENT DEADLOCK.以下是我们正在使用的连接池配置.

      p:driverClass="${app.jdbc.driverClassReplica}"
      p:jdbcUrl="jdbc:mysql://database,database/dbname"
      p:acquireIncrement="5"
      p:idleConnectionTestPeriod="300"
      p:maxPoolSize="100"
      p:maxStatements="2000"
      p:minPoolSize="10" 
      p:maxIdleTime="1800"
      p:maxConnectionAge="3600"
      p:maxIdleTimeExcessConnections="20"
      p:numHelperThreads="15"
      p:preferredTestQuery="SELECT 1"/>
Run Code Online (Sandbox Code Playgroud)

以下是日志

ThreadPoolAsynchronousRunner:743---- com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@70f6e5f5 -- A
PPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks! #]
2015-06-20 11:36:15 WARN  ThreadPoolAsynchronousRunner:759---- com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@70f6e5f5 -- A
PPARENT DEADLOCK!!! Complete Status: 
        Managed Threads: 15
        Active Threads: 15
        Active Tasks: 
Run Code Online (Sandbox Code Playgroud)

每个活动任务看起来像

com.mchange.v2.c3p0.stmt.GooGooStatementCache$StatementDestructionManager$1UncheckedStatementCloseTask@4ec69595
                        on thread: C3P0PooledConnectionPoolManager[identityToken->z8kflt9a33udv812q4fqf|60dffe1d]-HelperThread-#6
Run Code Online (Sandbox Code Playgroud)

待定任务:

com.mchange.v2.c3p0.stmt.GooGooStatementCache$StatementDestructionManager$1UncheckedStatementCloseTask@2b131ea8
com.mchange.v2.c3p0.stmt.GooGooStatementCache$StatementDestructionManager$1UncheckedStatementCloseTask@7441bdaf
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@80c67ca
com.mchange.v2.c3p0.stmt.GooGooStatementCache$StatementDestructionManager$1UncheckedStatementCloseTask@667202e6
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@471c7e95
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@1fba8cac
com.mchange.v2.c3p0.stmt.GooGooStatementCache$StatementDestructionManager$1UncheckedStatementCloseTask@1069807a
com.mchange.v2.c3p0.stmt.GooGooStatementCache$StatementDestructionManager$1UncheckedStatementCloseTask@7e71d200
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@62923eda
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@6f5c8cc4
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@251dd0fa
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@4882e01f
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@848386a
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@3d6fbb65
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@72780365
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@25271699
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@293ca9dd
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@4db40151
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@64c294b1
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@22b02425
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@5a150aed
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@1b807bcf
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@10406124
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@72a98ad1 …
Run Code Online (Sandbox Code Playgroud)

java mysql connection-pooling spring-jdbc c3p0

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

升级到Spring Boot 2后,如何将缓存指标公开给Prometheus?

我最近将Spring Boot应用程序从1.5升级到了2.0.1。我还使用千分尺将Prometheus集成迁移到了新的执行器方法。现在大多数事情都可以工作-包括一些自定义计数器和量规。

我注意到新的Prometheus端点/actuator/prometheus不再发布Spring缓存指标(大小和命中率)。

我唯一能找到的就是这个问题及其相关的提交

仍然无法在Prometheus导出上获取缓存指标。我尝试设置一些属性:

management.metrics.cache.instrument-cache=true
spring.cache.cache-names=cache1Name,cache2Name...
Run Code Online (Sandbox Code Playgroud)

但是什么都没有。我可以看到Hazelcast高速缓存管理器正在启动,注册了高速缓存管理器bean等等,但是都/metrics没有/prometheus显示任何统计信息。使用@Cacheable注释填充缓存。这与Spring Boot 1.5一起使用-我认为通过Hazelcast通过JMX公开了其指标,而prometheus出口商从那里获取了它吗?

现在不确定如何将其连接在一起。任何提示都欢迎!

hazelcast spring-boot spring-cache spring-boot-actuator prometheus

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