java Mule jython与main一起运行
Problem:
如何在Mule应用程序中运行具有主要功能的jython
Issue:
我有一个由mule flow调用的简单Jython代码
流量:
<mule xmlns:...
<flow name="wfileFlow1" doc:name="wfileFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP"/>
<logger message="===\n START ===" level="INFO" doc:name="Logger"/>
<scripting:component doc:name="Python">
<scripting:script engine="jython" file="src/main/java/com/test/Test1.py"/>
</scripting:component>
<logger message="===\n END ===" level="INFO" doc:name="Logger"/>
</flow>
</mule>
Test1.py
def add(a,b):
return a+b
def addFixedValue(a):
y = 5
return y +a
print add(1,2)
print addFixedValue(1)
输出:
===\n START ===
3
6
===\n END ===
如果我用main运行,那么就没有输出,也就是说它不打印任何东西
Test1.py
def add(a,b):
return a+b
def addFixedValue(a):
y = 5
return y +a
if __name__ == '__main__':
print add(3,4)
print addFixedValue(1)
它不打印jython值:
===\n START ===
===\n END ===
注:此处未打印jython值
问题是,因为第二个程序在Java中作为主程序运行,但若我的上述流程是错误的,那个么如何从mule应用程序运行主程序呢
# 1 楼答案
__name__
变量是just a Python interpreter hack用于执行主源文件中的节(并在导入的模块中忽略它们)。Mule在运行Jython脚本时将__name__
的值设置为main
,因此我想您可以执行以下操作: