2011-09-22 67 views
2

我有一個c庫,我在各種平臺上的應用程序中使用它。目前,我計劃使用JNI使用相同的c庫開發Web服務。我將使用一些應用程序服務器(計劃在Linux PC上使用weblogic)來託管此webservice。在java servlets中使用本機代碼(服務器端)

是否有任何人在java服務器上使用本機代碼的經驗。這種方法是否有效? 我將來會面臨任何問題嗎?

回答

1

一般的經驗法則是保持你的邏輯在本機代碼中,並避免多個jni調用(這通常在性能方面花費很多,而不僅僅是在java中實現相同的邏輯)。但一如既往,它很大程度上取決於您的設計和瓶頸(io,cpu,網絡等)。 希望這有助於。

0

我在Glassfish中使用了原生的JNI API。最大的問題是如果C代碼會立即崩潰整個應用程序服務器,不會發生正常的終止,堆棧跟蹤或其他任何事情。

我會盡可能少地保留C端,因爲Java將更容易處理。如果您遇到性能問題,請稍後優化。