【问题标题】:JAX-WS Endpoint not workingJAX-WS 端点不工作
【发布时间】:2014-03-27 12:06:32
【问题描述】:

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

毫秒.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 端点,但不是我创建的端点。在浏览器中点击该网址 (http://sutureself.com:9292/ws/milli) 也会返回“无法连接”错误。

如果我选择“启动”,则会显示两个链接(Glassfish 中的每个 http 端口一个),但这些链接返回 404。

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

我错过了什么?

请注意!上面代码中的所有sutureself.com实际上都是localhost,所以显然不喜欢你用localhost发布URL。

有关我的设置如何配置的更多信息将很高兴添加。

【问题讨论】:

    标签: java web-services glassfish jax-ws


    【解决方案1】:

    我之前也在 SOAP WS 中做过一个例子,但我有一个疑问,你为什么要使用 Glassfish Server,因为你正在通过 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());
        }
    
    }
    

    现在您已将您的 WS 绑定到 http://LH.com:9292/ws/milli。请通过http://LH.com:9292/ws/milli?wsdl 或http://LH.com:9292/ws/milli?test 进行检查

    【讨论】:

    • 尝试将其更改为 9091(这绝对是免费的),但仍然得到相同的结果,“无法连接”。
    • @SutureSelf 检查已编辑的答案。希望这会有所帮助。 lh.com=localhost
    • 非常感谢您的更新。当您说“不需要服务器”时,我是否只是创建此包的 JAR(或 WAR?)并运行它,还是仍需要在 Tomcat 或 Glassfish 中部署它?抱歉,刚开始编写 Web 服务。
    • @SutureSelf 你必须只运行发布者类,因为它有 main 方法,或者你可以为它制作一个可运行的 jar。
    • 无需部署,直接作为简单的java程序运行即可。
    猜你喜欢
    • 1970-01-01
    • 2012-12-28
    • 2019-01-10
    • 2021-12-05
    • 2011-04-28
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多