问题:
如何在Mule应用程序中运行具有main函数的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应用程序运行主程序?
答案 0 :(得分:0)
__name__
变量为just a Python interpreter hack,用于执行主源文件中的部分(并在导入的模块中忽略它们)。在运行Jython脚本时,Mule将__name__
的值设置为main
,所以我想你可以这样做:
if __name__ == '__main__' or __name__ == 'main':