2013-04-17 79 views
3

我一直在試圖在Weblogic服務器上部署JAX-WS服務,如此鏈接Creating a Simple HelloWorld Web Service中所示。 我已經部署這個,發現工作得很好。在weblogic上登錄web服務

現在我也想寫數據到日誌文件,每當這個服務被調用。爲此,我使用了log4j。這是我如何嘗試修改鏈接中的代碼。

package examples.webservices.hello_world; 

import javax.jws.WebService; 
import org.apache.log4j.Logger; 

@WebService(name="HelloWorldPortType", serviceName="HelloWorldService") 
public class HelloWorldImpl { 

    public static Logger log = Logger.getLogger(HelloWorldImpl.class); 

    public String sayHelloWorld(String message) { 
    try { 
     log.info("Start"); 
     System.out.println("sayHelloWorld:" + message); 
    } catch (Exception ex) { ex.printStackTrace(); } 
     return "Here is the message: '" + message + "'"; 
    } 
} 

我已在CLASSPATH變量log4j-1.2.8.jar文件的路徑。 但是,當我嘗試構建Web服務時,它錯誤地說,java.lang.ClassNotFoundException: org.apache.log4j.Logger

我正在使用與鏈接中給出的相同的build.xml文件。 build.xml文件需要修改嗎?我應該在哪裏放置log4j.properties文件?任何幫助表示讚賞。

+0

當前你在哪裏放置log4j jar和屬性文件? –

+0

看看這裏的說明。您需要將log4j添加到build.xml的jwsc部分,才能正確編譯。 http://middlewaremagic.com/weblogic/?p=698 –

+0

您是否已將* log4j-1.2.8.jar *添加到WebLogic CLASSPATH中,還是僅將項目CLASSPATH? –

回答

1

即使設置了類路徑,此問題也必須爲,因爲weblogic在運行時無法找到log4j。更具體地說,戰爭的Classloader無法找到log4j。

下面是解決的途徑:

  1. 檢查你的build.xml文件,如果你是逸岸在WAR捆綁log4j
  2. 轉到autodeploy目錄,war文件複製到不同的位置,放氣,並檢查WEB-INF/lib並檢查是否確實log4j的存在
  3. 檢查是否存在在類路徑不止一個log4j的版本。

最後,對於在weblogic部署可重複使用的瓶的組的優選的方法是通過一個shared library,通過weblogic.xml引用它。

它有助於:

  • 避免在不同的戰爭一個jar文件的重複捆綁。
  • 確保將所有部署簡化爲庫的首選版本 。
+0

感謝您的回答。我對此很陌生。我會嘗試你所建議的。 – Noel