我一直在寻找在互联网如何设置与RAD IDE本地Portal环境一起,我发现线程像这样但是这是古代历史的线程(在IT来说的),或者仅是指与RAD优化门户网站(点击这里).目前我正在运行RAD 8.0.4.1,我可以运行WAS实例,但我无法设法让Portal环境在本地运行.我读到过去有一些特定的Portal测试环境,但是对于新的RAD,我必须安装一个完整的Portal吗?在哪里得到它?我无法在任何地方找到好的参考.
我想在本地Portal-context中本地调试我的portlet.目前,portlet部署在远程Portal服务器上.这需要花费时间(包WAR,上传,刷新节点等).所以我想在本地运行我们的Portal,包括它的portlet.
在RAD中,我可以定义新服务器,并且可以看到"WAS 7上的WebSphere Portal v6.1服务器"选项,但它需要我定义服务器运行时环境.这将打开一个新的弹出窗口,我必须指定:
我的运行时安装在"IBM\SDP\runtimes"中,其中包含以下文件夹"base_stub,base_v6_stub,base_v7,base_v7_stub,base_v8_stub,base_v61_stub,portal_v61_stub,updi_v7x,updi_v70,wsdk".无论我试图指向哪个位置,它都会不断给出错误信息:"The Portal Server installation is not correct".
我有以下问题:
标题可能不正确,但我会尽力解释我的问题。我的项目是一个 Spring Boot 项目。我有调用外部 REST 端点的服务。
我有一个服务方法,其中包含对我拥有的其他服务的多个方法调用。每个单独的方法调用都可能成功与否。每个方法调用都对 REST 端点进行,并且可能存在一些问题,例如 Web 服务不可用或在极少数情况下抛出未知异常。无论发生什么,我都需要能够跟踪哪些方法调用成功,如果其中任何一个失败,我想回滚到原始状态,就好像什么也没发生一样,将其视为@Transactional 注释。所有 REST 调用都是不同的端点,需要单独调用,并且来自我没有影响的外部方。例子:
public MyServiceImpl implements MyService {
@Autowired
private Process1Service;
@Autowired
private Process2Service;
@Autowired
private Process3Service;
@Autowired
private Process4Service;
public void bundledProcess() {
process1Service.createFileRESTcall();
process2Service.addFilePermissionsRESTcall();
process3Service.addFileMetadataRESTcall(); <-- might fail for example
process4Service.addFileTimestampRESTcall();
}
}
Run Code Online (Sandbox Code Playgroud)
例如,如果process3Service.addFileMetadataRESTcall失败,我想对 process3 之前的每个步骤执行类似撤消(以相反顺序)的操作:
process2Service.removeFilePermissionsRESTcall();
process1Service.deleteFileRESTcall();
Run Code Online (Sandbox Code Playgroud)
我读过命令模式,但它似乎用于应用程序内的撤消操作,作为一种已执行操作的历史记录,而不是在 Spring Web 应用程序内。这对我的用例是否也正确,或者如果成功,我应该跟踪每个方法/网络服务调用吗?有没有这样做的最佳实践?
我想无论我如何跟踪它,我都需要知道哪个方法调用失败,然后从那里执行我的“撤消”方法 REST 调用。尽管从理论上讲,即使这些调用当然也可能会失败。
我的主要目标是不创建(在我的示例中)未执行任何进一步处理的文件。它要么全部成功,要么一无所获。一种交易。
更新 1:基于评论改进的伪实现:
public Process1ServiceImpl implements Process1Service {
public void createFileRESTcall() throws MyException {
// Call an external REST api, …Run Code Online (Sandbox Code Playgroud) 我们有一个 YAML 文件 ( pipelineB),它执行它必须执行的操作,它从特定的其他现有构建管道 ( pipelineA) 下载最新的构建工件。这是自动触发的。现在我们希望pipelineB手动运行此构建并能够选择要使用的另一个工件版本。在 Azure DevOps 构建管道中,有一个选项显示“运行管道”,您可以在其中选择要使用的“资源”。如果您选择一个资源,您最终会看到一个包含所有构建的列表,pipelineA您可以从中进行选择。
1.2.43-10019-master如果我们然后从管道运行中选择较旧的(例如)构建pipelineA并运行pipelineB,并且我们查看日志记录,我们会发现它会忽略我们手动选择的内容并始终下载最新版本。我可以理解它是这样做的,因为该DownloadBuildArtifact@0步骤告诉我们使用latestFromBranch构建版本来下载。
我的问题:我们如何手动选择资源构建工件并在 YAML 管道中进一步使用所选版本?理想情况下,如果您不进行手动运行/选择,则默认情况下它应该只使用工件的最新版本。
下面是我们的 YAML 管道的摘录:
name: pipelineB
resources:
pipelines:
- pipeline: pipelineA
source: pipelineA
branch: master
trigger:
branches:
- master
steps:
- task: DownloadBuildArtifacts@0
name:
displayName: 'Download pipelineA artifact'
inputs:
buildtype: specific
project: ourProjectName
pipeline: pipelineA
branchName: refs/heads/master
buildVersionToDownload: latestFromBranch
downloadType: specific
downloadPath: $(Pipeline.Workspace)
Run Code Online (Sandbox Code Playgroud)
基于@Krzysztof Madej 答案的工作解决方案。仅对于需要更改DownloadBuildArtifacts@0字段的步骤
,并且需要引入引用资源的新字段。buildVersionToDownloadspecific …
我正在运行Grails 3.0.11并希望为我的REST端点创建Swagger文档.我通过添加以下内容将SwaggyDoc - 插件添加到build.gradle脚本中的依赖项中:
compile "org.grails.plugins:swaggydoc:0.26.0".
Run Code Online (Sandbox Code Playgroud)
在IntelliJ中,我看到Swaggydoc依赖项已添加到我的库列表中.
通过grails run-app命令启动我的Grails应用程序并通过输入http:// localhost:8080/api /打开我的应用程序后,我收到404错误,告知该页面不存在.
我是否需要更多地配置或运行特殊的东西来生成文档?我已经尝试在Git项目中打开一张票,并且没有成功地联系作者.
Update1:似乎有一个Grails 3插件(在Versioneye找到?),我补充说:
compile "org.grails.plugins:swaggydoc-grails3:0.26.0"
Run Code Online (Sandbox Code Playgroud)
它确实工作了一半,默认情况下某种Pet-demo是可见的,它在域和枚举中的约束失败.实际上看起来效果不好.
Update2:正如Dilip Krishnan所指出的,我试图使用SpringFox,首先我将依赖项添加到我的Gradle构建文件中:
compile("io.springfox:springfox-swagger2:2.3.1")
compile("io.springfox:springfox-swagger-ui:2.3.1")
Run Code Online (Sandbox Code Playgroud)
然后我添加了一个名为ApiDocumentationConfiguration的新类,其中包含以下代码:
@Configuration
@EnableSwagger2
public class ApiDocumentationConfiguration {
@Bean
public Docket documentation() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
@Bean
public UiConfiguration uiConfig() {
return UiConfiguration.DEFAULT;
}
private ApiInfo metadata() {
return new ApiInfoBuilder()
.title("My awesome API")
.description("Some description")
.version("1.0")
.contact("my-email@domain.org")
.build();
}
}
Run Code Online (Sandbox Code Playgroud)
My Grails资源文件包含以下代码:
beans = …Run Code Online (Sandbox Code Playgroud)