java - 在 weblogic 上登录 web 服务

标签 java web-services logging log4j weblogic

我一直在尝试在 Weblogic 服务器上部署 JAX-WS 服务,如此链接 Creating a Simple HelloWorld Web Service 中所示. 我已经部署了它,发现它工作得很好。

现在我还想在调用此服务时将数据写入日志文件。为此,我正在使用 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 文件放在哪里?感谢您的帮助。

最佳答案

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

以下是解决问题的方法:

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

最后,在 weblogic 中部署一组可重用 jar 的首选方法是 shared library并通过 weblogic.xml 引用它。

它有助于:

  • 避免在不同的 war 中重复捆绑 jar 文件。
  • 确保您的所有部署都简化为首选版本 图书馆。

关于java - 在 weblogic 上登录 web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16061939/

相关文章:

java - 为什么 java.net.HttpURLConnection 响应无法识别的字符?

elasticsearch - Fluent-bit - 将 json 日志拆分为 Elasticsearch 中的结构化字段

javascript - 使用什么代替 window.onunhandledrejection 来处理不同浏览器中的 promise 错误?

python - 为什么 print() 和 logger 对象以意外的顺序流式传输到控制台输出?

java - 轴2 : two different webservices sharing the same name

java - 从实体获取或创建插入语句

java - Spring JDBCTemplate 执行不抛出异常

java - 短暂网络断开后连接无法恢复

php - NuSOAP:如何更改请求的内容类型?

java - 如何计算RESTful Web服务的响应时间