根据http://www.cnblogs.com/xdp-gacl/p/4259481.html 这个博客学习使用JDK发布WebService,发布的时候,程序中的("发布webservice成功!")  能够输出,控制台没有报错,但通过发布的URL无法访问。将URL改为localhost、127.0.0.1、0.0.0.0都试过也不行。使用netstat -ano 命令查看发布的端口,此端口没有被使用。
控制台的运行状态按钮在程序运行后红色一闪而过就变灰了我将我发布的过程发上来,请帮我看看问题出在哪,谢谢!
首先,定义接口,使用@WebService注解标注接口package me.gacl.ws;
import javax.jws.WebMethod;
import javax.jws.WebService;//使用@WebService注解标注WebServiceI接口
@WebService
public interface WebServiceI {    //使用@WebMethod注解标注WebServiceI接口中的方法
    @WebMethod
    String sayHello(String name);
    
    @WebMethod
    String save(String name,String pwd);
}编写interface的实现类,使用@WebService注解标注实现类,实现接口中定义的所有方法。package me.gacl.ws;import javax.jws.WebService;//使用@WebService注解标注WebServiceI接口的实现类WebServiceImpl
@WebService
public class WebServiceImpl implements WebServiceI {    @Override
    public String sayHello(String name) {
        System.out.println("WebService sayHello "+name);
        return "sayHello "+name;
    }    @Override
    public String save(String name, String pwd) {
        System.out.println("WebService save "+name+", "+pwd);
        return "save Success";
    }
}使用Endpoint(终端)类发布webservice,http://172.30.24.17是我本机地址package me.gacl.ws.test;import javax.xml.ws.Endpoint;import me.gacl.ws.WebServiceImpl;//发布Web Servicepublic class WebServicePublish {    public static void main(String[] args) {
        //定义WebService的发布地址,这个地址就是提供给外界访问Webervice的URL地址,URL地址格式为:http://ip:端口号/xxxx
        String address = "http://172.30.24.17:9005/WS_Server/Webservice";
        //使用Endpoint类提供的publish方法发布WebService,发布时要保证使用的端口号没有被其他应用程序占用
        Endpoint.publish(address , new WebServiceImpl());
        System.out.println("发布webservice成功!");
    }
}然后在WebServicePublish上右键 Run As Java Application,打开浏览器访问http://172.30.24.17:9005/WS_Server/Webservice和http://172.30.24.17:9005/WS_Server/Webservice?wsdl都不成功

解决方案 »

  1.   

    程序很简单,一般没问题吧,看一下jar包吧
      

  2.   

    看jar怎么看?这个应该是jdk自带的功能,我安装了jdk1.8
      

  3.   

    看jar怎么看?这个应该是jdk自带的功能,我安装了jdk1.8在接口上加上@SOAPBinding(style= SOAPBinding.Style.RPC)吧
      

  4.   

    看jar怎么看?这个应该是jdk自带的功能,我安装了jdk1.8在实现类上加上endpointInterface="接口全限定名",刚才说错了,使用jdk发布不用jar包的,我刚才想成用cxf发布了
      

  5.   

    看jar怎么看?这个应该是jdk自带的功能,我安装了jdk1.8在实现类上加上endpointInterface="接口全限定名",刚才说错了,使用jdk发布不用jar包的,我刚才想成用cxf发布了
    尝试了一下,一样的结果
    而且奇怪的是,那个服务器运行状态的按钮就直接灰掉了。我在想是不是这个原因
      

  6.   


    @WebService(name = "HelloService", targetNamespace = "http://controller.maven.com/")
    public interface IHello {
     @RequestWrapper(localName="getName",className="com.maven.controller.getName")
     public String getName(String name);
    }@WebService
    public class Hello implements IHello{
    @Override
    public String getName(String name) {
     System.out.println("�ӿڱ�����");
         return "hello:" + name;
    }}public class TestServ {
    public static void main(String[] args) {
            IHello hello = new Hello();
             
            Endpoint.publish("http://localhost:8080/test", hello);
            System.out.println("�����ɹ�");
        }
    }
    之前写的一个,你试下
      

  7.   

    你是用Run As Java Application来启动服务的,main方法代码执行完了服务就关闭了啊。
    你将这代码放在main方法的最后面System.in.read();
    这样在代码执行完服务不会停止,只有你在控制台按动键盘才会停止服务
      

  8.   

    我新建了一个项目,把代码copy过去就可以成功。没加System.in.read();也一直在运行,按钮没有变灰
    但是当我在原来的项目里面,再次执行的时候,就不成功,按钮运行后就变灰了,加了System.in.read();后没变灰,但是无效
    控制台没异常输出
      

  9.   

    请问楼主这个问题有解决吗,我也遇到了这样的问题 ,我是要在web项目中通过jdk发布webservice服务,在项目的一个目录下创建了测试类 mian方法启动 情形和你的一样,启动后按钮就比变灰了,地址无法访问,jdk1.6的 框架spring struts(这些不影响吧)