I tried to examine service discovery using the Eureka service (Netflix). I followed the steps in the wiki link below:
https:
The Eureka service is up and running.
Next, I tried to use the mail client to register the service using the POST method, as described in twiki, after reading the xml schema and sending the content type as JSON.
XML
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xsd:element name="instance"> <xsd:complexType> <xsd:all> <xsd:element name="hostName" type="xsd:string" /> <xsd:element name="app" type="xsd:string" /> <xsd:element name="ipAddr" type="xsd:string" /> <xsd:element name="vipAddress" type="xsd:string" /> <xsd:element name="secureVipAddress" type="xsd:string" /> <xsd:element name="status" type="statusType" /> <xsd:element name="port" type="xsd:positiveInteger" minOccurs="0" /> <xsd:element name="securePort" type="xsd:positiveInteger" /> <xsd:element name="homePageUrl" type="xsd:string" /> <xsd:element name="statusPageUrl" type="xsd:string" /> <xsd:element name="healthCheckUrl" type="xsd:string" /> <xsd:element ref="dataCenterInfo" minOccurs="1" maxOccurs="1" /> <xsd:element ref="leaseInfo" minOccurs="0"/> <xsd:element name="metadata" type="appMetadataType" minOccurs="0" /> </xsd:all> </xsd:complexType> </xsd:element> <xsd:element name="dataCenterInfo"> <xsd:complexType> <xsd:all> <xsd:element name="name" type="dcNameType" /> <xsd:element name="metadata" type="amazonMetdataType" minOccurs="0"/> </xsd:all> </xsd:complexType> </xsd:element> <xsd:element name="leaseInfo"> <xsd:complexType> <xsd:all> <xsd:element name="evictionDurationInSecs" minOccurs="0" type="xsd:positiveInteger"/> </xsd:all> </xsd:complexType> </xsd:element> <xsd:simpleType name="dcNameType"> <xsd:restriction base = "xsd:string"> <xsd:enumeration value = "MyOwn"/> <xsd:enumeration value = "Amazon"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="statusType"> <xsd:restriction base = "xsd:string"> <xsd:enumeration value = "UP"/> <xsd:enumeration value = "DOWN"/> <xsd:enumeration value = "STARTING"/> <xsd:enumeration value = "OUT_OF_SERVICE"/> <xsd:enumeration value = "UNKNOWN"/> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="amazonMetdataType"> <xsd:all> <xsd:element name="ami-launch-index" type="xsd:string" /> <xsd:element name="local-hostname" type="xsd:string" /> <xsd:element name="availability-zone" type="xsd:string" /> <xsd:element name="instance-id" type="xsd:string" /> <xsd:element name="public-ipv4" type="xsd:string" /> <xsd:element name="public-hostname" type="xsd:string" /> <xsd:element name="ami-manifest-path" type="xsd:string" /> <xsd:element name="local-ipv4" type="xsd:string" /> <xsd:element name="hostname" type="xsd:string"/> <xsd:element name="ami-id" type="xsd:string" /> <xsd:element name="instance-type" type="xsd:string" /> </xsd:all> </xsd:complexType> <xsd:complexType name="appMetadataType"> <xsd:sequence> <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/> </xsd:sequence> </xsd:complexType> </xsd:schema>
Register request parameters are as follows:
url: http: // tpdeva13: 8080 / eureka / v2 / apps / service1 Content-Type: application / json
Parameters sent as json:
{ "hostName":"tpdeva13", "app":"service1", "ipAddr":"tpdeva13", "vipAddress":"tpdeva13", "secureVipAddress":"tpdeva13", "status":"STARTING", "port":"11111" }
I'm not sure if the json I supply aligns with the xml schema?
When I send a mail request to the tomcat server hosting eureka, I get the following error:
com.thoughtworks.xstream.mapper.CannotResolveClassException: hostName com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:56) com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:55) com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88) com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:79) com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:74) com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:45) com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29) com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:133) com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32) com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1052) com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1036) com.thoughtworks.xstream.XStream.fromXML(XStream.java:921) com.netflix.discovery.converters.EntityBodyConverter.read(EntityBodyConverter.java:57) com.netflix.discovery.provider.DiscoveryJerseyProvider.readFrom(DiscoveryJerseyProvider.java:94) com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:474) com.sun.jersey.server.impl.model.method.dispatch.EntityParamDispatchProvider$EntityInjectable.getValue(EntityParamDispatchProvider.java:123) com.sun.jersey.server.impl.inject.InjectableValuesProvider.getInjectableValues(InjectableValuesProvider.java:46) com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$EntityParamInInvoker.getParams(AbstractResourceMethodDispatchProvider.java:153) com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$VoidOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:166) com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:134) com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469) com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400) com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:895) com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:843) com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:804) com.netflix.eureka.ServerRequestAuthFilter.doFilter(ServerRequestAuthFilter.java:34) com.netflix.eureka.StatusFilter.doFilter(StatusFilter.java:68
Web services will be written in C ++, so I need to use the REST APIs exposed by eureka for registration, unregister my services.
Someone can help. I am stuck in this.
The eureka server is in development mode.
Thanks!