के साथ वेब सेवा पंजीकृत करना मैं यूरेका (नेटफ्लिक्स) सेवा का उपयोग करके सेवा खोज का पता लगाने की कोशिश कर रहा था। मैंने नीचे दिखाए गए विकी लिंक में उल्लिखित चरणों का पालन किया है:यूरेका
https://github.com/Netflix/eureka
यूरेका सेवा ऊपर और चल रही है।
अगला मैंने एक्सएमएल स्कीमा पढ़ने और सामग्री प्रकार जेएसओएन के रूप में भेजने के बाद, twiki में वर्णित POST विधि के साथ एक सेवा पंजीकृत करने के लिए पोस्टमैन क्लाइंट का उपयोग करने का प्रयास किया।
एक्सएमएल
<?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>
<!-- hostName in ec2 should be the public dns name, within ec2 public dns name will
always resolve to its private IP -->
<xsd:element name="hostName" type="xsd:string" />
<!-- app name
Instructions for adding a new app name - <a _jive_internal="true" href="/clearspace/docs/DOC-20965" target="_blank">http://wiki.netflix.com/clearspace/docs/DOC-20965</a> -->
<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" />
<!-- optional -->
<xsd:element ref="leaseInfo" minOccurs="0"/>
<!-- optional app specific metadata -->
<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" />
<!-- metadata is only required if name is Amazon -->
<xsd:element name="metadata" type="amazonMetdataType" minOccurs="0"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="leaseInfo">
<xsd:complexType>
<xsd:all>
<!-- (optional) if you want to change the length of lease - default if 90 secs -->
<xsd:element name="evictionDurationInSecs" minOccurs="0" type="xsd:positiveInteger"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="dcNameType">
<!-- Restricting the values to a set of value using 'enumeration' -->
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "MyOwn"/>
<xsd:enumeration value = "Amazon"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="statusType">
<!-- Restricting the values to a set of value using 'enumeration' -->
<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">
<!-- From <a class="jive-link-external-small" href="http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/index.html?AESDG-chapter-instancedata.html" target="_blank">http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/index.html?AESDG-chapter-instancedata.html</a> -->
<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>
<!-- this is optional application specific name, value metadata -->
<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
इस तरह रजिस्टर अनुरोध देखो के मापदंडों:
यूआरएल: http://tpdeva13:8080/eureka/v2/apps/service1 सामग्री प्रकार: आवेदन/json
json के रूप में भेजा मानकों हैं:
{
"hostName":"tpdeva13",
"app":"service1",
"ipAddr":"tpdeva13",
"vipAddress":"tpdeva13",
"secureVipAddress":"tpdeva13",
"status":"STARTING",
"port":"11111"
}
मुझे यकीन नहीं है कि जेसन कि मैं एक्सएमएल स्कीमा के साथ संरेखित कर रहा हूं?
जब मैं बिल्ला सर्वर जो यूरेका होस्ट करता है करने के लिए पोस्ट अनुरोध भेजने, मैं निम्नलिखित त्रुटि मिलती है:
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
वेब सेवाओं सी में लिखा जाएगा ++ तो मैं बाकी एपीआई यूरेका द्वारा उजागर उपयोग करने की आवश्यकता पंजीकरण करने के लिए, मेरी सेवाओं को अपंजीकृत करें।
क्या कोई मदद कर सकता है। मैं इसके साथ अटक गया हूँ।
यूरेका सर्वर विकास मोड में चल रहा है।
धन्यवाद! { "$": 8001, "@enabled": "सच"}