小编der*_*itz的帖子

jenkins重新部署战争之前自动启动停止远程tomcat(部署插件)

目前jenkins构建了我的项目,最后通过jenkins deploy插件将工件部署在远程tomcat上.问题是,在多次重新部署之后,此过程失败(有时tomcat挂起或(un)部署失败).在所有情况下停止tomcat和手动取消部署有帮助.

有没有办法在构建/部署之前停止tomcat,删除旧的war和appfolder,并在deploy plugin想要部署工件之前重启tomcat?

thx提前

windows tomcat web-deployment jenkins

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

应用程序管理JPA,何时需要Transaction

我们正在开发一个小网站(将在Tomcat上运行),数据层使用JPA(Eclipselink)完成.我前段时间做过类似的事情.但我总是不确定何时需要开始和结束交易或进行同花.目前我使用事务,如果我添加(持久)和删除对象.如果我在已经持久化的对象上调用setter,则不使用事务.

是否有指南/教程或简短的答案何时使用事务或如何正确实现应用程序管理的JPA.

java jpa jpa-2.0

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

通用断言(ArrayList,hasItems(InstanceOfSomeInterface))不起作用

我想使用Hamcrest的hasItems与"实际"的集合,是一个ArrayList<? extends SomeInterface>

assertThat(ArrayList<? extends SomeInterface>, hasItems(InstanceOfSomeInterface))
Run Code Online (Sandbox Code Playgroud)

编译器说:

assertThat(T, Matcher<T>)类型中的方法Assert不适用于参数(ArrayList<capture#9-of ? extends MyInterface>, Matcher<Iterable<MyInterface>>)

出了什么问题?我该怎么办(我真的想在这里使用Hamcrest)?

java generics junit hamcrest

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

如何检查孔和间隙的矩形集合?

我正在寻找一种方法来检查矩形的集合(Java TreeSet) - 由一个"可比较的"Java类实现,使用google guavas Range for x和y range - 用于交叉点和孔.我知道一个选项可能是使用kd树,但我不知道如何构建这样一个kd树(对于矩形它应该是4d,不应该吗?)以及如何解决问题(交集,孔).

排序优先考虑y轴上的x轴.

编辑:(尝试重述问题):用例是创建任意表(由2或3个矩形块"header","pre column","data"组成).我必须保证每个块中没有交叉点和孔(即由无效的html或其他表数据源提供)(除此之外,块必须组合在一起).目前(刚刚得到一个想法)我试图保存位置(x,y)被占用的二维数组.最后,所有位置必须恰好占用一次.

java algorithm tree geometry treeset

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

自Android 4.0以来,Camera.lock,unlock()自动为您管理?

我刚开始使用android开发并使用本教程编写了一个简单的相机应用程序:http: //developer.android.com/guide/topics/media/camera.html#custom-camera

在那里我读到:"注意:从Android 4.0(API级别14)开始,将自动为您管理Camera.lock()和Camera.unlock()调用."

但是,这是什么意思?我的相机应用程序支持Android 16(4.1.2)和17(4.2.2)但如果我丢弃锁定和解锁调用我从mediarecorder(-19)收到错误.那么如何让android处理呢?或者这是什么意思"自动管理"?

android android-camera

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

从一个"meta mojo"和参数共享执行多个mojos

我创建了一个带有一些mojos的maven-plugin,每个都有一个非常特殊的目的.但对于最终用户来说,一次执行其中一些会很好(顺序是至关重要的).

那么如何从mojos执行其他mojos执行?正在执行的mojos有一些@Parameter字段.所以我不能简单new MyMojo().execute.

我的第二个问题是:有没有办法在Mojos之间共享一些@Parameters,还是我必须在每个使用它们的Mojo中声明"@Parameter"?我的想法是以某种方式通过实用程序类提供所有共享参数,该实用程序类为getter提供参数.

我认为这两个问题的答案都在于理解maven-mojos背后的DI机制?!我对Guice有一些经验,但对Plexus没有经验.那么有人可以给我一些建议吗?

dependency-injection maven-plugin

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

使用camel cxf时出错"没有绑定工厂... http://schemas.xmlsoap.org/soap/ registered"(但在eclipse中有效)

在我的骆驼应用程序中,我在java dsl中创建cxf端点:

CxfEndpoint cxf = new CxfEndpoint(rtdmUrl, new CxfComponent(this.getContext()));
cxf.setServiceClass(EventPortType.class);
process.process(rtdmSetNameFactory.get(eventName)).to(cxf).process(handleRtdmAnswer);
Run Code Online (Sandbox Code Playgroud)

如果尝试运行此路线我得到:

Exception in thread "main" org.apache.camel.FailedToCreateProducerException: Failed to create Producer for endpoint: End
point[http://localhost:8088/mockEventSoapBinding]. Reason: org.apache.cxf.service.factory.ServiceConstructionException:
Could not resolve a binding for null
...
Caused by: org.apache.cxf.BusException: No binding factory for namespace http://schemas.xmlsoap.org/soap/ registered.
Run Code Online (Sandbox Code Playgroud)

但是如果我在eclipse中运行main [](在具有相同配置的@Test中调用)它运行正常!?

我的jar是用maven-assembly-plugin构建的(带有所有依赖项的可执行jar)我希望/认为这只是一个配置问题或者与我如何设置cxf端点有关.

赏金猎人的其他信息 我创建了一个重现错误的最小例子:https: //bitbucket.org/moritz_loeser/cxftests/src

它包含一个调用main()的测试,如果您更改路径中的路径,则此测试正在运行(它会为每个文件创建一个交换,但会忽略文件内容).我使用soapUi(上面的存储库中的项目文件)来模拟Web服务.在我的机器上,测试工作正常但正在运行mvn package,然后java -jar cxfTests-1.0-SNAPSHOT-jar-with-dependencies.jar从目标文件夹失败. 我刚试过:mvn test也正常工作

这是依赖树:

[INFO] com.sas:cep-adapter-java:jar:1.0-SNAPSHOT 
[INFO] +- com.sas:dfESP-component:jar:1.0-SNAPSHOT:compile 
[INFO] |  \- dfx-esp-api:api:jar:2.2-post:compile 
[INFO] +- com.sas.o2:RTDM_general_client:jar:0.0.1-SNAPSHOT:compile 
[INFO] +- com.google.inject:guice:jar:3.0:compile 
[INFO] …
Run Code Online (Sandbox Code Playgroud)

cxf apache-camel

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

骆驼如何添加一些东西到注册表 - 一般用java

有时我必须向camel注册表添加一个对象(当然还有java).在大多数情况下,它是一个dataSource.

我的问题是我无法弄清楚一般的工作方式.

我总是开始获得注册表:

getContext().getRegistry();
Run Code Online (Sandbox Code Playgroud)

但"注册表"没有任何添加对象的方法.所以我必须尝试(使用调试器)正在使用哪种注册表

getContext().getRegistry(some.class)<some method to add something>;
Run Code Online (Sandbox Code Playgroud)

例如,在一个项目(骆驼蓝图)中,我必须打电话

SimpleRegistry registry = new SimpleRegistry();
registry.put("some", bean);
getContext().getRegistry(CompositeRegistry.class).addRegistry(registry);
Run Code Online (Sandbox Code Playgroud)

现在我创建了一个具有相同结构的项目(也是相同的maven父项),但现在上面的代码停止工作,因为由于某种原因现在camel使用了PropertyPlaceholderDelegateRegistry我确信会有代码来添加我的bean但是;

是否有适用于每个设置的代码可以为camels注册表添加内容?

apache-camel

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

Spring Boot @RestClientTest 如何使用真实服务器进行测试(不是模拟)

我需要针对 REST API 创建集成测试。我的服务使用 Resttemplate 作为 HTTP 客户端。客户端代码是从 swagger 文件生成的。

运行测试会产生错误java.lang.AssertionError: No further requests expected: HTTP GET

看来测试是针对模拟服务器运行的。如何让测试在真实服务器上运行?

这是我当前的测试设置(想要剪切一个最小的测试框架以获得快速测试 - 启动完整的上下文太慢):

@RunWith(SpringRunner.class)
@Import(value = { TpzConfig.class, TpzServiceRestImpl.class, ManufacturingPlantPhPmMapperImpl.class,
        ProductHierarchyMapperImpl.class, PlantMapperImpl.class })
@ActiveProfiles(profiles = { "tpz" })
@RestClientTest
public class TpzServiceRestImplTest {

    @Autowired
    private TpzService to;

    @MockBean
    private ProductionPlantService ppService;

    @MockBean
    private ProductHierarchyService phService;

    @Test
    public void test() {
        List<ProductManufacturer> pmByProductHierarchy = to.pmByProductHierarchy("001100909100100388");

    }

}
Run Code Online (Sandbox Code Playgroud)

我需要@RestClientTest一个 RestTemplateBuilder 的 bean。

有没有办法配置@RestClientTest使用真实服务器(类似于@DataJpaTest我可以配置不使用 h2 的地方)?

integration-testing spring-boot

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

Angular 9 - 如何扩展(本地环境感知周开始)NativeDateAdapter 工作?

为了了解语言环境(关于本周开始)Material DatePicker 我创建了这个扩展:

import { Injectable } from "@angular/core";
import { LOCALE_ID, Inject } from "@angular/core";
import { Platform } from "@angular/cdk/platform";
import { getLocaleFirstDayOfWeek } from "@angular/common";
import { NativeDateAdapter } from '@angular/material/core';

@Injectable({providedIn: 'root'})
export class LocaleDateAdapter extends NativeDateAdapter {
  constructor(@Inject(LOCALE_ID) public locale: string) {
    super(locale, new Platform());
  }

  getFirstDayOfWeek() {
    return getLocaleFirstDayOfWeek(this.locale);
  }
}
Run Code Online (Sandbox Code Playgroud)

我还尝试使用 0 args 构造函数并不断重新调整 1 作为一周的第一天。一些同事说这{providedIn: 'root'}可能会有所帮助——但没有。

我把它app.module.ts作为提供者连接起来:

{
  provide: DateAdapter,
  useClass: LocaleDateAdapter
}
Run Code Online (Sandbox Code Playgroud)

我的 DatePicker 设置如下:

<mat-form-field appearance="fill"> …
Run Code Online (Sandbox Code Playgroud)

angular-material angular

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