【发布时间】:2017-04-12 08:13:32
【问题描述】:
有没有人能够使用 Java 1.8 + AWS Flow + Maven 编译应用程序?
我有一个使用 Java 1.8 创建的已建立的 Java 应用程序,它使用 AWS 库和 AWS 流框架。我现在希望自动化产品的构建,我选择使用 Maven。至此,项目是在 eclipse 中手动导出的。
我已经到了可以构建一个 Jar 的地步,其中包含我们生成的工作流类(外部客户端 + 工厂)以及我理解的方面类(xxxxx$1.class、xxxxx$2.class)。
最终目标是在编译时进行编织。
但是,在运行 maven 构建的 jar 时,工作流无法按预期工作。应用程序完全忽略 @Asynchronous 注释并导致未就绪状态。结果,它将取消我们希望执行的活动的调度。
我创建了一个简单的应用程序,其中包含一个工作流和活动来显示我遇到的问题。此版本已通过 eclipse 导出并且可以运行,但是通过 POM 构建时出现错误。
Start with message: With Comp
Created Workers
Added implentations
Nov 28, 2016 12:14:11 PM com.amazonaws.services.simpleworkflow.flow.worker.GenericWorker start
INFO: start: GenericWorkflowWorker[super=GenericWorkflowWorker[service=com.amazonaws.services.simpleworkflow.AmazonSimpleWorkflowClient@163e4e87, domain=Experimental, taskListToPoll=TEST, identity=3174@ip-10-0-1-141, backoffInitialInterval=100, backoffMaximumInterval=60000, backoffCoefficient=2.0], workflowDefinitionFactoryFactory=com.amazonaws.services.simpleworkflow.flow.pojo.POJOWorkflowDefinitionFactoryFactory@56de5251]
Nov 28, 2016 12:14:12 PM com.amazonaws.services.simpleworkflow.flow.worker.GenericWorker start
INFO: start: GenericActivityWorker [super=GenericActivityWorker[service=com.amazonaws.services.simpleworkflow.AmazonSimpleWorkflowClient@4c60d6e9, domain=Experimental, taskListToPoll=TEST, identity=3174@ip-10-0-1-141, backoffInitialInterval=100, backoffMaximumInterval=60000, backoffCoefficient=2.0], taskExecutorThreadPoolSize=100]
Start workers
Now Sleep
Sleep Done
Make Call
DECIDER 1
DECIDER 2
DECIDER DOING CATCH
java.lang.IllegalStateException: not ready
at com.amazonaws.services.simpleworkflow.flow.core.Settable.get(Settable.java:91)
at com.amazonaws.services.simpleworkflow.flow.core.Functor.get(Functor.java:35)
at root.DeciderWFMethods.printMessage(DeciderWFMethods.java:79)
at root.DeciderWFMethods.access$100(DeciderWFMethods.java:6)
at root.DeciderWFMethods$1.doTry(DeciderWFMethods.java:54)
at --- continuation ---.(:0)
at root.DeciderWFMethods.workflowExecute(DeciderWFMethods.java:42)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.amazonaws.services.simpleworkflow.flow.pojo.POJOWorkflowDefinition.invokeMethod(POJOWorkflowDefinition.java:150)
at com.amazonaws.services.simpleworkflow.flow.pojo.POJOWorkflowDefinition.access$1(POJOWorkflowDefinition.java:148)
at com.amazonaws.services.simpleworkflow.flow.pojo.POJOWorkflowDefinition$1.doTry(POJOWorkflowDefinition.java:76)
at --- continuation ---.(:0)
at com.amazonaws.services.simpleworkflow.flow.pojo.POJOWorkflowDefinition.execute(POJOWorkflowDefinition.java:66)
at com.amazonaws.services.simpleworkflow.flow.worker.AsyncDecider$WorkflowExecuteAsyncScope.doAsync(AsyncDecider.java:70)
DECIDER DOING FINALLY
比较了从 eclipse 和 maven 构建生成的 jar 的内容后,对我来说没有什么明显不同。
我在网上搜索了一些有用的东西,但只找到了 Java 1.6 / 1.7 的示例,没有找到 1.8 的示例。
在这一点上,我应该提到我是 maven 的新手,但相信它更有可能是 AspectJ 配置/AWS 构建工具问题,而不是 Maven 问题。
构建和运行
示例应用程序正在 EC2 实例上运行,使用 EC2 IAM 角色执行到名为“Experimental”的工作流域
它接受活动大写的字符串,然后决策者应该打印来自活动的消息。
构建。
mvn clean
mvn package
然后运行编译好的jar
java -jar Test.jar "a test message"
.
GitHub 链接
https://github.com/jwhitefield-hark/aws-flow-maven
任何建议将不胜感激。
【问题讨论】:
标签: maven amazon-web-services java-8 amazon-swf