有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    __name__变量是just a Python interpreter hack用于执行主源文件中的节(并在导入的模块中忽略它们)。Mule在运行Jython脚本时将__name__的值设置为main,因此我想您可以执行以下操作:

    if __name__ == '__main__' or __name__ == 'main':