首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在`implements`的类上使用`java2wsdl`?

如何在`implements`的类上使用`java2wsdl`?
EN

Stack Overflow用户
提问于 2013-01-22 20:01:57
回答 1查看 396关注 0票数 0

我正在使用java2wsd生成wsdl。我的班级是

public class REWS {...}

我只是像这样添加了implements HttpSessionListener

public class REWS implements HttpSessionListener {...}

我开始得到HttpSessionListenerNoClassDefFoundError错误。

我可以构建REWS类,但是一旦我想用java2wsdl生成存根,我就会得到NoClassDefFoundError

如何告诉java2wsdl/Tomcat/lib/servlet-api.jar中获取HttpSessionListener?如何包含servlet-api.jar

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-22 20:19:19

这确实是一个糟糕的设计。

首先,让我们回顾一下接口的用途。接口在你的类中建立了一个强大的设计契约,比声明继承的方法“普通的旧方式”更强大。WSDL也定义了接口,即使java2wsdl在类上工作。

使用接口是因为它们是框架方法的参数,允许您为它们提供自己的契约实现。对于WSDL,这一点略有不同。WSDL是契约的,并且是自增强的。除了显式导入的XSD模式之外,WSDL中不再需要任何内容。

那么:为什么要实现HttpSessionListener呢?正如文档所述,当会话发生变化时,框架会激活一个正确注册的会话侦听器。这是您的可公开访问web服务的设计合同的一部分吗?绝对而不是!!

通过实现,您隐式地向公共导出了两个供内部使用的方法,因此您正在尝试(但永远不会成功)向您的公共服务声明另外两个处理会话更改的方法。这不仅是错误的,而且是不可能的,因为HttpSessionEvent根本不能导出到XSD!

建议书

不要在WS类上实现此接口。使用您的自定义实现作为类成员,并根据您的web服务的功能让它与您的WS类交互。我不是Tomcat方面的专家,但是web服务不使用会话和cookie,所以我怀疑您是否会在web服务中处理会话。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14458106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档