Thanks. How/where do I change it? Regards,
Erwin > El jul. 31, 2017, a las 01:43, Christian Schneider <[email protected]> > escribió: > > You can change the path from cxf to something else but you can not remove > it. > > Christian > > 2017-07-30 18:08 GMT+02:00 Erwin Hogeweg <[email protected]>: > >> Hi Christan, >> >> Thanks for your reply, >> >> simply use the address: >> >> props.put("org.apache.cxf.ws.address", "/MyService"); >> >> and no context. This way each of your services can have its own path and >> all will share the http service port. >> I had tried that, but that doesn’t quite work either. I get the wrong >> port, and ‘cxf’ is added to the context: >> >> g! props >> System properties: >> ... >> org.osgi.service.http.port = 8088 >> >> 2017-07-30 11:51:12,624 [INFO ] pool-3-thread-1 TopologyManagerExport:218 >> TopologyManager: export successful for {my.service.interfaces.MyService}={ >> org.apache.cxf.ws.address=/MyService, name=MyServiceImpl, type=internal, >> service.exported.configs=org.apache.cxf.ws, >> service.exported.interfaces=*, service.id=149, service.bundleid=118, >> service.scope=singleton}, endpoints: [{endpoint.framework.uuid= >> d0b196e5-3e75-0017-138b-f8dd2f9e5e15, endpoint.id=http://192.168. >> 180.1:8181/cxf/MyService, >> endpoint.package.version.my.service.interfaces=4.1.0, >> endpoint.service.id=149, name=MyServiceImpl, >> objectClass=[my.service.interfaces.MyService], >> org.apache.cxf.ws.address=http://192.168.180.1:8181/cxf/MyService, >> service.bundleid=118, service.imported=true, service.imported.configs=[ >> org.apache.cxf.ws], service.intents=[SOAP.1_1, HTTP, SOAP], >> service.scope=singleton, type=internal}] >> >> Oh, that’s interesting, the port in the endpoint.id and the address above >> is incorrect. The wsdl IS available as http://localhost:8088/cxf/ >> MyService?wsdl. >> >> So the only challenge appear to be to remove the ‘cxf’ from the path (the >> consumers of the service have the path hardcoded in the remoteservice.xml >> file). Any ideas about that? >> >> >> Thanks, >> >> Erwin >> >> >> Christian >> >> 2017-07-29 19:52 GMT+02:00 Erwin Hogeweg <[email protected]< >> mailto:[email protected]>>: >> >> Hi, >> >> I have a couple of OSGi services which are available as remote OSGi >> service with CXF-DOSGi. The services are registered with the following >> props, and that all works fine: >> >> Dictionary<String, Object> props = new Hashtable<String, Object>(); >> props.put("name", "MyServiceImpl"); >> props.put("type", "internal"); >> props.put("service.exported.interfaces", "*"); >> props.put("service.exported.configs", "org.apache.cxf.ws"); >> props.put("org.apache.cxf.ws.address", "http://" + serviceHost + ":" + >> servicePort + "/MyService"); >> props.put("org.apache.cxf.ws.httpservice.context", "/MyService"); >> >> However, I would like to use the port defined with >> org.osgi.service.http.port property as the service port. That doesn’t work >> though because CXF creates a new instance of JettyHttpDestination for >> every used port. This is from JettyHttpDesitination.java where servers for >> ea. port are created: >> >> protected void retrieveEngine() >> throws GeneralSecurityException, >> IOException { >> if (serverEngineFactory == null) { >> return; >> } >> engine = >> serverEngineFactory.retrieveJettyHTTPServerEngine( >> nurl.getPort()); >> if (engine == null) { >> engine = serverEngineFactory. >> createJettyHTTPServerEngine(nurl.getHost(), >> nurl.getPort(), nurl.getProtocol()); >> } >> >> And port 8088 is already claimed by the HttpService registered by CXF: >> >> g! services (objectClass=*HttpService) >> {org.osgi.service.http.HttpService, org.eclipse.equinox.http. >> servlet.ExtendedHttpService}={service.description=Equinox Jetty-based >> Http Service, service.vendor=Eclipse.org<http://Eclipse.org><http:// >> Eclipse.org>, >> http.port=8088, service.id=64, service.bundleid=31, service.scope=bundle} >> "Registered by bundle:" org.eclipse.equinox.http. >> servlet_1.1.400.v20130418-1354 >> [31] >> "Bundles using service" >> org.apache.cxf.cxf-rt-transports-http_3.1.6 [82] >> cxf-dosgi-ri-dsw-cxf_1.7.0 [138] >> >> The CXF-DOSGi documentation<http://cxf.apache.org/distributed-osgi- >> reference.html> says about the org.apache.cxf.ws.httpservice.contex: >> "When this property is specified, the OSGi HTTP Service is used to expose >> the service, rather than a dedicated Jetty HTTP Server. This property >> doesn't allow the specification of a port number, as this is provided by >> the HTTP Service. The Distributed OSGi distributions come with Pax-Web, for >> which configuration information can be found at >> http://wiki.ops4j.org/display/paxweb/Configuration, however other OSGi >> HTTP Service implementations are potentially configured differently.” >> >> When I try that, the service is bound to localhost:9000 instead of >> 0.0.0.0:8088, which seems to happen in org.apache.cxf.dosgi.dsw. >> handlers.PojoConfiguration.java: >> >> private String getPojoAddress(Map<String, Object> sd, Class<?> iClass) >> { >> String address = getClientAddress(sd); >> if (address != null) { >> return address; >> } >> >> // If the property is not of type string this will cause an >> ClassCastException which >> // will be propagated to the ExportRegistration exception property. >> Object port = sd.get(Constants.WS_PORT_PROPERTY); >> if (port == null) { >> port = "9000"; >> } >> >> address = "http://localhost:" + port + "/" + >> iClass.getName().replace('.', '/'); >> LOG.info<http://LOG.info>("Using a default address: " + address); >> return address; >> } >> >> I am trying to understand what I am missing for a while now, and every now >> and again on a quiet Fri. afternoon (…) I take another stab at it, but I am >> not getting much further. >> >> FWIW… the CXF servlet IS registered under the port defined by >> org.osgi.service.http.port. >> >> This is all based on >> CXF: 3.1.6 and CXF-DOSGi: 1.7.0 >> Java 8 >> Eclipse Equinox 3.10.2 >> >> I checked the release notes for 1.8.0 but didn’t see anything related to >> this issue. >> >> Any suggestions or pointers in the right directions would be greatly >> appreciated. >> >> >> Thanks, >> >> Erwin >> Erwin Hogeweg >> CTO >> 3690 Airport Road >> Boca Raton, FL 33431 >> P. +1 (954) 556-6565 >> M. +1 (561) 306-7395 >> F. +1 (561) 948-2730 >> [Seecago]<http://www.seecago.com> >> >> >> >> >> -- >> -- >> Christian Schneider >> http://www.liquid-reality.de >> <https://owa.talend.com/owa/redir.aspx?C=3aa4083e0c744ae1ba52bd062c5a7e >> 46&URL=http%3a%2f%2fwww.liquid-reality.de> >> >> Open Source Architect >> http://www.talend.com >> <https://owa.talend.com/owa/redir.aspx?C=3aa4083e0c744ae1ba52bd062c5a7e >> 46&URL=http%3a%2f%2fwww.talend.com> >> >> Erwin Hogeweg >> CTO >> 3690 Airport Road >> Boca Raton, FL 33431 >> P. +1 (954) 556-6565 >> M. +1 (561) 306-7395 >> F. +1 (561) 948-2730 >> [Seecago]<http://www.seecago.com> >> > > > > -- > -- > Christian Schneider > http://www.liquid-reality.de > <https://owa.talend.com/owa/redir.aspx?C=3aa4083e0c744ae1ba52bd062c5a7e46&URL=http%3a%2f%2fwww.liquid-reality.de> > > Open Source Architect > http://www.talend.com > <https://owa.talend.com/owa/redir.aspx?C=3aa4083e0c744ae1ba52bd062c5a7e46&URL=http%3a%2f%2fwww.talend.com> Erwin Hogeweg CTO 3690 Airport Road Boca Raton, FL 33431 P. +1 (954) 556-6565 M. +1 (561) 306-7395 F. +1 (561) 948-2730 [Seecago]<http://www.seecago.com>
