3

我一直在尝试在 Weblogic 服务器上部署 JAX-WS 服务,如此链接中所示,创建一个简单的 HelloWorld 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 + "'";
    }
}

我已经在变量中设置了log4j-1.2.8.jar文件的路径。CLASSPATH但是当我尝试构建 Web 服务时,它会说,java.lang.ClassNotFoundException: org.apache.log4j.Logger.

我正在使用与build.xml链接中给出的相同文件。文件中是否需要任何修改build.xml?我应该将 log4j.properties 文件放在哪里?任何帮助表示赞赏。

4

1 回答 1

1

即使设置了类路径,这个问题也必须是因为 weblogic 无法在运行时找到 log4j。具体来说,war的Classloader是找不到log4j的。

以下是解决问题的方法:

  1. 如果您实际上捆绑log4j在您的 WAR 中,请检查您的 build.xml。
  2. 转到 autodeploy 目录,将 war 文件复制到其他位置,将其放气并WEB-INF/lib检查 log4j 是否确实存在
  3. 检查您的类路径中是否有多个 log4j 版本。

最后,在 weblogic 中部署一组可重用 jar 的首选方法是通过共享库并通过weblogic.xml.

它有助于:

  • 避免在不同的战争中重复捆绑 jar 文件。
  • 确保您的所有部署都简化为首选版本的库。
于 2013-06-08T10:16:39.300 回答