JAX-WS端点无法正常工作

时间:2014-03-27 12:06:33

标签: java web-services glassfish jax-ws

我正在使用Glassfish编写(非常)小型SOAP Web服务。我的代码如下:

Milliseconds.java

package com.suture.self.ws;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import javax.jws.soap.SOAPBinding.Use;

@WebService
@SOAPBinding(style = Style.DOCUMENT, use = Use.LITERAL)
public interface Milliseconds {
    @WebMethod
    String currentMilliseconds();
}

MillisecondsImpl.java

package com.suture.self.ws;

import javax.jws.WebService;

@WebService(endpointInterface = "com.suture.self.ws.Milliseconds") 
public class MillisecondsImpl implements Milliseconds {

    @Override
    public String currentMilliseconds() {
        return String.valueOf(System.currentTimeMillis());
    }
}

MillisecondsEndpoint.java

package com.suture.self.ws;

import javax.xml.ws.Endpoint;

public class MillisecondsEndpoint {

    public static void main(String[] args) {
        Endpoint.publish("http://sutureself.com:9292/ws/milli", new MillisecondsImpl());
    }
}

当我在Glassfish服务器上运行此程序(通过Eclipse)时,管理控制台会向我显示正常工作的?wsdl?Tester端点,但不是我创建的端点。在浏览器中访问该URL(http://sutureself.com:9292/ws/milli)也会返回“无法连接”错误。

如果我选择“启动”,那么我会看到两个链接(Glassfish中每个http端口一个),但这些链接返回404.

如果我只是尝试点击“上下文根”路径,那也不起作用。我需要一个入口点,我找不到它。

我错过了什么?

请注意!上述代码中的所有sutureself.com实际上都是localhost,因此您不喜欢使用localhost发布网址。

我们很乐意添加有关如何配置设置的更多信息。

1 个答案:

答案 0 :(得分:2)

我之前在SOAP WS中也做了一个例子,但我有一个疑问,你为什么要使用 Glassfish服务器,因为你正在使用main方法部署你的WS,它将地址绑定到你的服务。我认为不需要服务器。

使用eclipse按照以下步骤测试WS -

注意:请关闭Glassfish服务器

1 - 创建一个新的java项目(不是动态Web项目)

2 - 在 hello 包中创建 HelloWorld

package hello;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public class HelloWorld{
    @WebMethod
    public String method(String name)
    {

        return "hello " +name;
    }
}

您不需要明确地创建界面。

3:现在创建一个 Publisher 类,在 hello 包中发布WebService

package hello;

import javax.xml.ws.Endpoint;

public class Publisher {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Endpoint.publish("http://LH.com:9292/ws/milli", new HelloWorld());
    }

}

现在,您已使用http://LH.com:9292/ws/milli绑定了WS。请按http://LH.com:9292/ws/milli?wsdlhttp://LH.com:9292/ws/milli?test

进行检查