43

我在调用 Web 服务中存在的方法时遇到问题。wsdl 是使用 AXIS 创建的。

当我尝试使用我的 java 代码调用它时,我从服务响应中获取空值。

我在控制台中打印出警告消息:

找不到所需的类(javax.activation.DataHandler 和 javax.mail.internet.MimeMultipart)。附件支持被禁用。

在尝试解决这个问题时,我在我的工作区构建路径中添加了 activation.jar 和 mail.jar,重新启动了服务器。

编辑:

右键单击 WSDL ==> 生成客户端

然后我得到了一个代理类,我用它写了这个来调用服务方法:

public class CallingWebService1 {

public static void main(String[] args) throws Exception {

    WebService1Proxy proxy1 = new WebService1Proxy();
    proxy1.setEndpoint("http://localhost:8045/WebService1/services/WebService1");

    EmployeeDetails details = proxy1.getDetails();
    System.out.println("Employee Id: " + details.getEmpId());
    System.out.println("Employee Name: " + details.getEmpName());
    System.out.println("Dept Id: " + details.getDeptId());
    System.out.println("Dept Name" + details.getDeptName());
    System.out.println("Age: " + details.getAge());
}

但问题仍然存在:(

更多信息:

getDetails() 方法正在执行从 Oracle DB 获取一些记录的 DB 操作。为了执行 DB 操作,使用了 class12.jar。它与我正在做的调用服务方法有关吗?

4

3 回答 3

45

为了修复 javax.activation.DataHandler 问题,您必须在类路径中添加JavaBeans Activation Framework activation.jar。

为了修复 javax.mail.internet.mimeMultipart 问题,您必须在类路径中添加Java Mail API mail.jar。

控制台中打印的警告消息表明上述 jar 不在类路径中。

于 2012-09-01T11:06:27.327 回答
25

只有一个 jar (mail.jar) 就足以解决这个问题。这个 jar 应该出现在你的类路径中。

于 2013-12-08T05:46:51.097 回答
5

不幸的是,wsdl 仍在使用中:(您可以通过在下面添加依赖项来解决此警告。

    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4.7</version>
    </dependency>
    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
    </dependency>
于 2019-05-15T06:18:58.253 回答