2011-05-10 75 views
0

我使用Apache CXF D-OSgi和Eclipse Equinox作爲我的開發環境,我註冊了服務,但無法在IE中打開wsdl頁面。 服務寄存器碼是以下:無法使用ApacheCXF訪問wsdl dosgi

`  Dictionary<String, String> props = new Hashtable<String, String>(); 
    props.put("osgi.remote.interfaces", "*");  
    props.put("osgi.remote.configuration.type","pojo"); 
    props.put("osgi.remote.configuration.pojo.address", "http://localhost:9000/1"); 

     sr = bundleContext.registerService 
    (service1.class.getName(), new impl1(), props);` 

當我嘗試運行的客戶端程序,它示出了下方的錯誤:

Caused by: java.net.SocketException: SocketException invoking http://localhost:9000/1: Network is unreachable: connect 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
at java.lang.reflect.Constructor.newInstance(Unknown Source) 
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:2058) 
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:2043) 
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) 
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:639) 
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) 
... 43 more 

Caused by: java.net.SocketException: Network is unreachable: connect 
at java.net.PlainSocketImpl.socketConnect(Native Method) 
at java.net.PlainSocketImpl.doConnect(Unknown Source) 
at java.net.PlainSocketImpl.connectToAddress(Unknown Source) 
at java.net.PlainSocketImpl.connect(Unknown Source) 
at java.net.SocksSocketImpl.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at sun.net.NetworkClient.doConnect(Unknown Source) 
at sun.net.www.http.HttpClient.openServer(Unknown Source) 
at sun.net.www.http.HttpClient.openServer(Unknown Source) 
at sun.net.www.http.HttpClient.<init>(Unknown Source) 
at sun.net.www.http.HttpClient.New(Unknown Source) 
at sun.net.www.http.HttpClient.New(Unknown Source) 
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) 
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) 
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) 
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source) 
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleHeadersTrustCaching(HTTPConduit.java:1955) 
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.onFirstWrite(HTTPConduit.java:1907) 
at org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:42) 
at org.apache.cxf.io.AbstractThresholdOutputStream.write(AbstractThresholdOutputStream.java:69) 
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1974) 
... 46 more 

2011-5-10 23:22:04 org.apache.cxf.dosgi.topologymanager.RemoteServiceAdminListenerImpl remoteAdminEvent 

信息:接收到的未處理的事件類型:1 2011-5-10 23:22:04 org.apache.cxf.dosgi.topologymanager.TopologyManager $ 1 modifiedService 信息:TopologyManager:EndpointListener已更改... 2011-5-10 23:22:04 org.apache.cxf.dosgi.dsw.service .RemoteServiceAdminCore importService 信息:importService()端點: {endpoint.id = http:// localhost:9000/1,objectClass = [Ljava.lang.String; @ 988707,osgi.remote.configuration.pojo.address = http:// localhost:9000/1,osgi.remote .configuration.type = pojo,osgi.remote.interfaces = ,service.imported = true,service.imported.configs = org.apache.cxf.ws 2011-5-10 23:22:04 org.apache。 cxf.dosgi.topologymanager.RemoteServiceAdminListenerImpl remoteAdminEvent 信息:未處理的事件類型已收到:1 2011-5-10 23:22:04 org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore importService 信息:importService()Endpoint: {endpoint.id = http:// localhost:9000/1,objectClass = [Ljava.lang.String; @ 988707,osgi.remote.configuration.pojo.address = http:// localhost:9000/1,osgi.remote .configuration.type = pojo,osgi.remote.interfaces =,service.imported = true,service.imported.configs = org.apache.cxf.ws} 2011-5-10 23時22分04秒org.apache.cxf.dosgi.topologymanager.RemoteServiceAdminListenerImpl remoteAdminEvent 信息:收到未處理的事件類型:1

回答

1

我認爲這些都是不準確的屬性來註冊遠程服務。

我面臨同樣的問題(顯示了WSDL從瀏覽器訪問時,雖然OSGi控制檯說我的服務註冊成功沒有得到的),但可以在CXFOSGi使用下列屬性的遠程服務得到這個工作

props.put("service.exported.interfaces", "*"); 
    props.put("service.exported.configs", "org.apache.cxf.ws"); 
    props.put("org.apache.cxf.ws.address", "http://localhost:8080/TDMSAPIService"); 

希望有所幫助。