我简要说明:
如何让wsdl2java生成SOAP 1.2绑定?
详细说明:
我使用工具(apache cxf 3.0.2)为wsdl生成了java服务类wsdl2java:
MBA-Anton:bin asmirnov$ ./wsdl2java -server -catalog /tmp/wsdl/catalog -d /tmp/onvif/server http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl
Run Code Online (Sandbox Code Playgroud)
然后我创建了服务代码并运行它,它正在运行:
public static void main(String args[]) throws InterruptedException {
System.out.println("Starting Server");
Endpoint.publish("udp://239.255.255.250:3702", new DiscoveryService());
System.out.println("Server ready...");
Thread.sleep(10 * 60 * 1000); // 10 min
System.out.println("Server exiting");
System.exit(0);
}
Run Code Online (Sandbox Code Playgroud)
开始记录:
Starting Server
28.11.2014 19:51:59 org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
INFO: Creating Service {http://www.onvif.org/ver10/network/wsdl}DiscoveryService from class org.onvif.ver10.network.wsdl.DiscoveryLookupPort
28.11.2014 19:52:00 org.apache.cxf.endpoint.ServerImpl initDestination
INFO: Setting the server's publish address to be udp://239.255.255.250:3702
28.11.2014 19:52:00 org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean buildServiceFromWSDL
INFO: …Run Code Online (Sandbox Code Playgroud) 是否有针对JAX-WS RI,Axis2,CXF或其他工具包的WS-Discovery规范的任何实现?
我正在尝试使用一些 Java 代码发现 ONVIF 设备。具体来说,我试图获取他们的设备服务地址(我相信这只是他们的 IP 地址?),正如ONVIF 核心规范指出(第 4.3 节)“成功的发现提供了设备服务地址。一旦客户端拥有设备服务地址它可以通过设备服务接收详细的设备信息...”。最终获得网络上 ONVIF 设备的详细信息是我的目标。一般来说,我也在寻找一些与使用 ONVIF 规范相关的指南。
我对网络服务世界(以及一般的网络)还是个新手,所以如果我说了什么蠢话,请原谅我。不过,我自己也为此付出了很多努力:我阅读了大量的ONVIF Core Spec、ONVIF Application Programmer's Guide和WS-Discovery Specific。如果可以的话,我会总结一下我所知道的,以便您可以告诉我我是否走在正确的道路上:
wsimport(由 JDK 提供)生成 WSDL 中的 Java 类以在我的代码中使用。但我知道调用这些方法将在设备发现之后进行,对吗? 我需要发现支持onvif协议的局域网中的所有ip摄像头.我尝试使用WSDiscoveryClient,但它没有发现onvif服务,尽管它发现了其他服务.它就像onvif没有响应来自WSDiscoveryClient的探测.Onvif设备管理器可以进行发现,所以我知道可以做到这一点.有谁知道怎么做?