首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Oozie Java Action获取异常堆栈跟踪作为输出

从Oozie Java Action获取异常堆栈跟踪作为输出
EN

Stack Overflow用户
提问于 2016-05-05 17:46:47
回答 2查看 707关注 0票数 2

我在Oozie上运行了一个java操作。我希望在此Java操作失败的情况下获得完整的java异常。Java操作只使用一个jar文件。下面是java操作

代码语言:javascript
复制
<workflow-app name='proj-wf' xmlns="uri:oozie:workflow:0.2">
    <start to='startIndex'/>
    <action name='startIndex'>
       <java>
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <prepare>
            </prepare>
            <configuration>
                <property>
                    <name>mapred.job.queue.name</name>
                    <value>${queueName}</value>
                </property>
            </configuration>
        <main-class>com.myproj.MyDriverJob</main-class>
            <arg>-Dlww.commit.on.close=true</arg>

            <capture-output/>
        </java>
        <ok to='end'/>
        <error to='end'/>
    </action>
    <kill name='kill'>
    <message>Java failed, error message[${wf:errorMessage(wf:lastErrorNode())}] </message>
    </kill>
    <end name='end'/>
</workflow-app>

它如何发回在我的java类中发生的错误。我正在寻找一种方法来发送异常堆栈跟踪回我的服务器。

EN

回答 2

Stack Overflow用户

发布于 2016-05-09 00:48:17

在java类中使用System.exit(int n),因为这将使java操作进行错误转换。

这样,您可以在Java操作失败的情况下获得激励性堆栈跟踪。

票数 0
EN

Stack Overflow用户

发布于 2017-05-25 23:12:13

处理Java代码中的所有异常,并在每个catch块中,为异常文本(例如e.toString())设置一个Oozie属性键(比如Error)。使用System.exit(0)退出。(目前,使用System.exit(1)退出似乎会阻止Oozie捕获输出。)有关Oozie如何捕获Java操作的输出的详细信息,请参阅herehere

然后,您可以在Oozie工作流中访问Error,并使用Email action将其通过电子邮件发送给您自己。

提示:处理代码中异常的更好方法是使用一个设置Oozie Error属性的全局单例ErrorHandler类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37047371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档