नोट: परीक्षण परियोजना मैं उल्लेख कर रहा हूँ के साथ डाउनलोड किया जा सकता:स्प्रिंग डी अनुप्रयोगकॉन्टेक्स्ट.एक्सएमएल एक्सएसआई वास्तव में कैसे है: स्कीमालोकेशन का उपयोग किया जाता है?
Git क्लोन https://github.com/mperdikeas/so-spring-di-appcontext-schemalocation.git
.. और 'चींटी रन' के साथ चलाते हैं।
मैं समझता हूं कि एक्सएमएल नेमस्पेस नामों का उपयोग अपारदर्शी पहचानकर्ताओं के रूप में किया जाता है और इसका उपयोग यूआरआई (wikipedia) के रूप में नहीं किया जाता है। मैं यह भी समझता हूं कि एक्सएमएल स्कीमा स्थान स्कीमा दस्तावेजों के वास्तविक स्थान के रूप में संकेत प्रदान करने के लिए हैं, और संकेतों में, अभ्यास में उपयोग नहीं किया जाता है (w3.org)। इस बात को ध्यान में रखते हुए मैं applicationContext.xml को संशोधित करके एक साधारण स्प्रिंग डी एप्लिकेशन (एक साधारण जे 2 एसई सेटिंग में उपयोग किया जाता है) के साथ प्रयोग कर रहा हूं। यहाँ शुरू करने संस्करण है:
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:context = "http://www.springframework.org/schema/context"
xmlns:p = "http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:component-scan base-package="atm"/>
<context:property-placeholder location="classpath:META-INF/spring/atm.properties"/>
<bean id="soapTransport_" class="atm.SoapATMTransport" p:retries="${transport.retries}"/>
जब मैंने किया था एक 'sudo ifconfig eth0 नीचे' परियोजना पूरी तरह से भाग गया जो क्रम schemaLocations से कुछ भी लाने के लिए परेशान कर रहा नहीं के अनुरूप है।
[java] org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 10 in XML document from class path resource [META-INF/spring/applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 10; columnNumber: 100; cvc-elt.1: Cannot find the declaration of element 'beans'.
[java] at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:194)
[java] at org.apache.tools.ant.taskdefs.Java.run(Java.java:771)
[java] at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:221)
[java] at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:135)
[java] at org.apache.tools.ant.taskdefs.Java.execute(Java.java:108)
[java] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[java] at java.lang.reflect.Method.invoke(Method.java:601)
[java] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[java] at org.apache.tools.ant.Task.perform(Task.java:348)
[java] at org.apache.tools.ant.Target.execute(Target.java:390)
[java] at org.apache.tools.ant.Target.performTasks(Target.java:411)
[java] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
[java] at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
[java] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[java] at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
[java] at org.apache.tools.ant.Main.runBuild(Main.java:809)
[java] at org.apache.tools.ant.Main.startAnt(Main.java:217)
[java] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
[java] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
कौन सा है कि वसंत डि क्रम xsi में प्रत्येक जोड़ी में दूसरी URL का उपयोग करता सुझाव है कि लगता है: हालांकि, जब मैं प्रत्येक जोड़ी में दूसरी यूआरएल के लिए एक सरल अंडरस्कोर जोड़कर schemaLocations घायल मैं निम्नलिखित शिकायत मिली : किसी प्रकार के पहचानकर्ता के रूप में स्कीमालोकेशन (इसके तर्क में हार्डकोडेड क्योंकि नेटवर्क एक्सेस नहीं है)। तो मेरी धारणा यह होगा कि वसंत डि क्रम प्रत्येक नाम स्थान के लिए पहचानकर्ता के दो प्रकार का उपयोग करता है: xmlns पहचानकर्ता विशिष्ट नाम स्थान (एक अपारदर्शी स्ट्रिंग के रूप में प्रयोग किया जाता है) और schemaLocation पहचानकर्ता विशिष्ट है कि के लिए स्कीमा संस्करण की पहचान करने की पहचान के लिए नेमस्पेस (फिर से एक अपारदर्शी स्ट्रिंग के रूप में उपयोग किया जाता है)। अर्थात। स्कीमालोकेशन वास्तव में नामस्थान के संस्करण के लिए (एक विपरीत तरीके से उपयोग किया जाता है? क्योंकि यह डब्ल्यू 3 सी दस्तावेजों का इरादा नहीं लगता है)। इसके अलावा, इस तरह के मामले में, स्प्रिंग डी रनटाइम स्कीमालोकेशन की कमी के बारे में शिकायत क्यों करता है "पी" नामस्थान। क्या मेरा मानसिक मॉडल सही है?
धन्यवाद, कि एक स्पष्ट मॉडल है। दो अतिरिक्त प्रश्न यदि मैं कर सकता हूं: [1] मेरे प्रोजेक्ट के पुस्तकालयों में केवल एक spring.chemas फ़ाइल (spring.jar में) है और इसमें एक मैपिंग शामिल नहीं है जैसे कि आप 'xsi' के लिए वर्णन करते हैं और 'पी' नेमस्पेस (हालांकि मुझे 'संदर्भ' और रूट नेमस्पेस मैपिंग मिल सकती है), [2] उस मैपिंग चीज़ को कहां दस्तावेज किया गया है? –
@MenelaosPerdikeas: दुर्भाग्य से मैं दोनों [1] और [2] के उत्तरों को नहीं जानता। –