Maven 2 @WebServices作为ejbjar中的@Stateless会话bean

Maven 2 @WebServices作为ejbjar中的@Stateless会话bean,maven-2,wsdl,jax-ws,java-ee-6,ejb-3.1,Maven 2,Wsdl,Jax Ws,Java Ee 6,Ejb 3.1,情景: 将一些web服务创建为@statelessbean,将其打包为EJBJAR。结果-无法访问wsdl文件 目标:我想使用带有可访问的wsdl文件表单web的ejbjar打包,将@WebServices用作@Stateless会话 网络服务: @Stateless @WebService(serviceName = "ws.isp.SecurityService", wsdlLocation = "META-INF/wsdl/SecurityService.wsdl") public cla

情景: 将一些web服务创建为@statelessbean,将其打包为EJBJAR。结果-无法访问wsdl文件

目标:我想使用带有可访问的wsdl文件表单web的ejbjar打包,将@WebServices用作@Stateless会话

网络服务:

@Stateless
@WebService(serviceName = "ws.isp.SecurityService", wsdlLocation = "META-INF/wsdl/SecurityService.wsdl")
public class SecurityService{
    @EJB
    private Kerberos factory;

    @EJB
    private UsersServiceBean uService;

    public SecurityService() {
    }

    @WebMethod
    @WebResult(name = "SimpleResponse")
    public SimpleResponse LogOut(
            @WebParam(name = "sessionUUID", targetNamespace = "https://secure.co.ua/ws/")
            String sessionUUID
    ) {
        SimpleResponse resp = new SimpleResponse();
        try{
        factory.removeSession(sessionUUID);

        resp.setError(WSErrorCodes.SUCCESS);
        }catch (Exception e){
            e.printStackTrace();
            resp.setError(WSErrorCodes.UNRELOSVED_ERROR);
        }
        return resp;
    }

    @WebMethod
    public MySession logIn(
            @WebParam(name = "username", targetNamespace = "https://secure.co.ua/ws/")
            String username,
            @WebParam(name = "password", targetNamespace = "https://secure.co.ua/ws/")
            String password){
        MySession result = new MySession();
        try {
            UserSession us = factory.creatSession(uService.getUser(username, password).getId());
            result.setSessionID(us.getSessionUUID().toString());
            result.setError(WSErrorCodes.SUCCESS);
        } catch (NullPointerException e){
            e.printStackTrace();
            result.setError(WSErrorCodes.UNRELOSVED_USER);
        } catch (Exception e){
            e.printStackTrace();
            result.setError(WSErrorCodes.UNRELOSVED_ERROR);
        }
        return result;
    }

}
在这种情况下,我得到

无效的wsdl请求

当我尝试访问wsdl时 如果不使用wsdlLocation的描述,则会得到空白页

Web服务,因为它自我工作良好

Q1:在EJBJAR中将web服务的wsdl文件位置描述为无状态的规则是什么

问题2:是否可以在maven打包期间生成wsdl文件

问题3:如何为web服务生成wsdl文件,其中我们有@Stateless和@EJB这样的注释(目前我只能通过注释这些注释来生成它)

环境:Mave2、EJB3.1、GlassfishV3、jax ws 2.x

谢谢大家!

问题1。在EJBJAR中将web服务的wsdl文件位置描述为无状态的规则是什么

如果通过wsdllocation属性提供,那么Metro似乎使用类加载器读取wsdl,这使得EJB JAR的
META-INF/wsdl
成为放置wsdl的合适选择。 我使用以下EJB进行了测试:

@Stateless
@WebService(wsdlLocation = "META-INF/wsdl/HelloService.wsdl")
public class HelloService {
    public String hello(String name) {
        return "Hello, " + name + "!";
    }
}
WSDL位于我的EJBMaven项目中的
src/main/resources/META-INF/WSDL/

访问显示的是myWSDL(而不是动态生成的WSDL)

问题是,你试过了吗

问题2。是否可以在maven打包期间生成wsdl文件

目标可以做到这一点(参见参数),但我必须承认,我现在完全迷失了方向

使用Java-first方法时,要么让JAX-WS运行时在部署时动态生成WSDL,要么提供静态版本并使用
wsdlLocation
。然而,在我看来,生成WSDL和使用wsdlLocation没有多大意义。这有什么意义?文件以某种方式证实了这一点:

默认情况下,wsgen不生成WSDL文件。此标志是可选的,将导致wsgen生成WSDL文件,通常仅用于开发人员在部署端点之前查看WSDL

第三季度。如何为我们有@Stateless和@EJB注释的web服务生成wsdl文件(目前我只能通过注释这些注释来生成它)


我不理解这个问题,也不理解为什么要生成WDSL(见上文)。

问题出在断页检查器中。。所以,当我去的时候,我在web inspector中得到了一个空白页面

对不起,这是假的。

>Q1。是的,我尝试了,但是我得到的不是wsdl>无效的wsdl请求>第2季度谢谢,它应该有帮助>第3季度-问题在于wsgen-如果在java文件中使用@Stateless和@EJB之类的注释,它无法从java文件生成wsdl。