目前jenkins构建了我的项目,最后通过jenkins deploy插件将工件部署在远程tomcat上.问题是,在多次重新部署之后,此过程失败(有时tomcat挂起或(un)部署失败).在所有情况下停止tomcat和手动取消部署有帮助.
有没有办法在构建/部署之前停止tomcat,删除旧的war和appfolder,并在deploy plugin想要部署工件之前重启tomcat?
thx提前
我们正在开发一个小网站(将在Tomcat上运行),数据层使用JPA(Eclipselink)完成.我前段时间做过类似的事情.但我总是不确定何时需要开始和结束交易或进行同花.目前我使用事务,如果我添加(持久)和删除对象.如果我在已经持久化的对象上调用setter,则不使用事务.
是否有指南/教程或简短的答案何时使用事务或如何正确实现应用程序管理的JPA.
我想使用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 TreeSet) - 由一个"可比较的"Java类实现,使用google guavas Range for x和y range - 用于交叉点和孔.我知道一个选项可能是使用kd树,但我不知道如何构建这样一个kd树(对于矩形它应该是4d,不应该吗?)以及如何解决问题(交集,孔).
排序优先考虑y轴上的x轴.
编辑:(尝试重述问题):用例是创建任意表(由2或3个矩形块"header","pre column","data"组成).我必须保证每个块中没有交叉点和孔(即由无效的html或其他表数据源提供)(除此之外,块必须组合在一起).目前(刚刚得到一个想法)我试图保存位置(x,y)被占用的二维数组.最后,所有位置必须恰好占用一次.
我刚开始使用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处理呢?或者这是什么意思"自动管理"?
我创建了一个带有一些mojos的maven-plugin,每个都有一个非常特殊的目的.但对于最终用户来说,一次执行其中一些会很好(顺序是至关重要的).
那么如何从mojos执行其他mojos执行?正在执行的mojos有一些@Parameter字段.所以我不能简单new MyMojo().execute.
我的第二个问题是:有没有办法在Mojos之间共享一些@Parameters,还是我必须在每个使用它们的Mojo中声明"@Parameter"?我的想法是以某种方式通过实用程序类提供所有共享参数,该实用程序类为getter提供参数.
我认为这两个问题的答案都在于理解maven-mojos背后的DI机制?!我对Guice有一些经验,但对Plexus没有经验.那么有人可以给我一些建议吗?
在我的骆驼应用程序中,我在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) 有时我必须向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注册表添加内容?
我需要针对 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 的地方)?
为了了解语言环境(关于本周开始)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)