作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
问题:在 BPEL 中使用 java 嵌入被认为是不好的做法,如果是这样,为什么?
在我的工作中,我经常使用 Java 嵌入作为 BPEL 组件来完成某些工作。它可以是非常简单的事情,我在 Java 中感觉很舒服,也可以是(据我所知)不可能用 BPEL 中的其他组件完成的事情。
在 12c BPEL 源代码中嵌入简单 java 的示例:
<bpelx:exec name="TruncateBlankNamespace" language="java" version="1.5">
<![CDATA[String origHeader = (String)getVariableData("randomHeader"); try { String replacedvalue = origHeader.replaceAll(" xmlns=\"\"", ""); setVariableData("randomHeader_something", replacedvalue) ;} catch (Exception exception) { exception.printStackTrace(); }]]>
</bpelx:exec>
我使用它的另一个例子是将有效载荷编码和解码为 base64 并返回,
11c BPEL 源中嵌入 base64 编码的示例:
<bpelx:exec import="oracle.soa.common.util.Base64Encoder"/>
<variables>
<variable name="DecodedMessage" type="xsd:string"/>
<variable name="EncodedMessage" type="xsd:base64Binary"/>
<variables/>
<bpelx:exec name="EncodePayload" language="java" version="1.5">String decodedMessage = (String)getVariableData("DecodedMessage"); try { String encodedMessage = Base64Encoder.encode(decodedMessage.getBytes()); setVariableData("EncodedMessage", encodedMessage);} catch (Exception exception) { exception.printStackTrace(); }</bpelx:exec>
现在我发现嵌入是解决某些问题和快速解决问题的非常有用的工具,而无需在您使用的工具中做额外的作业。但是,我注意到在 Oracle Soa 套件/BPEL 中使用 java 嵌入是一种不好的做法。
我是一名初学者中间件开发人员,也是堆栈溢出的新手,所以如果我不够全面,请原谅,请指出这篇文章的所有错误,并随时编辑 :D!
非常感谢!
杰斯珀
最佳答案
如果这是不好的做法,那么您应该改用什么更好的做法?
我可以看出在 XML 中嵌入实际的 Java 代码可能看起来很丑陋。但是,将这种语言嵌入那种语言是开发人员一直在做的事情。
<button onclick="getElementById('date').innerHTML = Date()">
.这些能力的存在是因为它们是必要的。在某些时候,他们使某人能够完成某事。把事情做好很重要。
我会问自己几个问题:
引用最佳实践(或不良实践或“反模式”)的人应该能够解释他们的推理。毕竟这是工程学。
关于java - Q : Is embedding Java bad practice in BPEL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54532975/
我是一名优秀的程序员,十分优秀!