我知道如何使用@WebService和@Stateless注释编写EJB并将其公开到WebService中。
但是因为我们首先尝试使用其他工具来生成WSDL然后创建Java代码。我可以使用WebLogic的WSDLC从WSDL生成服务代码。但问题是WSDLC生成的代码不是EJB。是否有任何关于WSDL的建议 - > EJB?
如果可能,我不想使用AXIS。
答案 0 :(得分:2)
我在EJB和Web Services工作了很长时间,并没有遇到任何这样的工具。逻辑上它是有道理的,
POJO / Facade是否使用EJB或任何其他服务进一步委托,完全取决于实现。
这就是我觉得不存在直接从WSDL生成EJB的工具的原因。但我的经验再次限制了我。我很想知道这样的工具是否存在。
编辑:仅供参考,有WSDL EJB Extension。但它需要现有的EJB将其操作绑定到WSDL。 (它不会创建EJB代码)
答案 1 :(得分:1)
嗯,并不是说新的EJB 3.1并不比旧版本好,但我仍然倾向于使用Apache CXF来实现Web服务:
它有一个很好的wsdl2java工具(也可以用作maven插件):
http://cxf.apache.org/docs/wsdl-to-java.html
获取您的WSDL文件,验证它,然后为您的Web服务的实现生成非常干净的Java模板代码:您有用于编组请求和响应的JAXB类,一个非常简单(编码到接口)的Web服务实现class包含每个ws操作的方法(您必须使用业务逻辑实现哪些方法),以及可选的另一个Java应用程序可以轻松访问您的服务的优秀Java客户端存根。即使没有客户端存根,您仍然可以获得一个很好的干净和标准的实现,它基本上只是Java类,不需要EJB容器来启动(或测试)您的Web服务。
答案 2 :(得分:0)
SAP NetWeaver Developer Studio支持从WSDL生成EJB WebService。我试试看。 http://help.sap.com/saphelp_nw72/helpdata/en/46/7f2fef88190ad3e10000000a11466f/content.htm
我还检查了Apache CXF,WebLogic wsdlc和SAP生成的代码。它们很相似。如果您使用EJB 3,您只需将@Stateless注释添加到Apache CXF或WebLogic生成的代码中,以使其成为EJB。
但我认为将业务EJB直接暴露给WebService并不是一个好主意。应该有一个服务层。使用EJB作为服务层的好处是它可以使用注入来轻松访问其他EJB。