Java发布wsdl的端口号,webservice怎么发布,如何得到wsdl

当前位置:我的异常网» Java Web开发 » webservice怎么发布,如何得到wsdl

webservice怎么发布,如何得到wsdl

www.myexceptions.net  网友分享于:2015-08-26  浏览:517次

webservice如何发布,怎么得到wsdl?

最近在学webservice ,按照资料自己写了一个demo(java Project)

贴上代码:

package com.entity;

import java.util.Date;

/**

* @author jmwu

*

*/

public class Customer {

private long id;

private String cusName;

private Date cusBirthday;

public long getId() {

return id;

}

/**

* @param id

*/

public void setId(long id) {

this.id = id;

}

public String getCusName() {

return cusName;

}

/**

* @param cusName

*/

public void setCusName(String cusName) {

this.cusName = cusName;

}

public Date getCusBirthday() {

return cusBirthday;

}

/**

* @param cusBirthday

*/

public void setCusBirthday(Date cusBirthday) {

this.cusBirthday = cusBirthday;

}

}

上面这个Customer类是一个方法的返回值类型继续:

服务端点接口:

package com.IService;

import com.entity.Customer;

public interface IHelloService {

Customer selectMaxAgeStudent(Customer c1,Customer c2);

Customer selectMaxLongNameStudent(Customer c1,Customer c2);

}

服务端点接口实现类:

package com.IService.Impl;

import com.IService.IHelloService;

import com.entity.Customer;

public class IHelloServiceImpl implements IHelloService {

@Override

public Customer selectMaxAgeStudent(Customer c1, Customer c2) {

if (c1.getCusBirthday().getTime()

return c1;

else

return c2;

}

@Override

public Customer selectMaxLongNameStudent(Customer c1, Customer c2) {

if (c1.getCusName().trim().length() >c2.getCusName().trim().length())

return c1;

else

return c2;

}

}

web发布:我们发布Web 服务使用的是javax.xml.ws.*包中的EndPoint 的静态方法publish()。

package com.IService.soap;

import javax.xml.ws.Endpoint;

import com.IService.Impl.IHelloServiceImpl;

public class SoapServer {

public static void main(String[] args) {

Endpoint.publish("http://localhost:8080/helloService",new IHelloServiceImpl());

}

}

资料说我直接运行main方法就可以发布这个web服务,

之后就可以直接访问http://localhost:8080/helloService?wsdl,问题是现在我运行这段程序的时候出现空指针异常,该如何发布这个web服务呢?

异常信息:

Exception in thread "main" java.lang.NullPointerException

at com.sun.xml.internal.ws.server.EndpointFactory.getWsdlLocation(Unknown Source)

at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.getPrimaryWsdl(Unknown Source)

at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.createEndpoint(Unknown Source)

at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.publish(Unknown Source)

at com.sun.xml.internal.ws.spi.ProviderImpl.createAndPublishEndpoint(Unknown Source)

at javax.xml.ws.Endpoint.publish(Unknown Source)

at com.IService.soap.SoapServer.main(SoapServer.java:9)

PS———资料补充:

Customer类是公开为Web 服务的接口中的参数类型和返回值,因此你需要使用JAXB 注解告诉

CXF 如何在XML和Java Object 之间处理,因为前面说过SOAP 消息格式包装的是一段XML

代码,那么无论是服务器端还是客户端在接收到SOAP 消息时都需要将XML 转化为Java

Object,在发送SOAP 消息时需要将Java Object 转化为XML。

(5.)查看WSDL:

我们访问http://127.0.0.1:8080/helloService?wsdl 地址,您会看到很长的XML 文件(由于浏

览器的问题,如果你看到的是空白页面,请查看源代码),这就是WSDL(WebService Definition

Language),对于你要访问的Web 服务,只要在其地址后加上,就可以在浏览器中查看用于

描述Web 服务的WSDL,这也是一种XML,Web 服务能够被各种编程语言书写的程序访

问就是通过WSDL 这种通用的契约来完成的。

如果你已经看到WSDL,那么表示我们的Web 服务发布成功了。你可能会差异,我们没有

借助Tomcat 这样的Web 服务器,直接运行一个main 方法是怎么发布的Web 服务呢?其实

CXF 内置了Jetty(Servlet 容器),因此你不需要将你的程序部署到Tomcat 等Web 服务器

也可以正常发布Web 服务。

------解决方案--------------------

3 楼所说的只是一个简单的端点发布。没有考虑到在 WebService 中如何实现数字签字、SOAP XML 校验、异步 Web 服务等很多的东西!

------解决方案--------------------

文章评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值