2014-03-31 73 views
0

問題上運行:騾子的Jython與主

如何運行具有騾子應用程序的主要功能一個Jython?

Issue: 

我有一個簡單的由mule流調用的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 === 

如果我和主運行,那麼也就是說,它沒有輸出不打印什麼。

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

__name__變量爲just a Python interpreter hack用於執行主源文件中的段(並忽略導入模塊中的段)。 Mule在運行Jython腳本時將__name__設置爲main,所以我猜你可以這樣做:

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