2012-04-20 14 views
5

का उपयोग कर neo4j से कनेक्ट करना क्या कोई भी यहां कोल्डफ्यूजन का उपयोग करके neo4j से सफलतापूर्वक कनेक्ट हो गया है?कोल्डफ्यूजन

मैं इस गाइड का उपयोग शुरुआती बिंदु के रूप में neo4j 1.6.1 से कनेक्ट करने में सक्षम था: http://ghostednotes.com/2010/04/29/using-neo4j-graph-databases-with-coldfusion । हालांकि, यह एक छोटी सी सफलता थी। मैंने अनइंस्टॉल किया है neo4j 1.6.1 और स्थापित 1.7।

अब मैं एक स्थानीय देव बॉक्स के रूप में विंडोज एक्सपी पर अपाचे, सीएफ 9.0.1 चला रहा हूं। मैंने अपने सीएफ क्लास पथ में ...\neo4j-community-1.7\lib जोड़ा और लाइब्रेरी सीएफ सर्वर जावा क्लास पथ में सूचीबद्ध हैं। neo4j ठीक चल रहा है, क्योंकि मैं उनके व्यवस्थापक इंटरफ़ेस का उपयोग कर सकता हूं: http://localhost:7474/webadmin/#। सीएफ और अपाचे भी ठीक चल रहे हैं। मैं उन्हें दैनिक उपयोग करता हूं।

जबकि नीचे दिया गया कोड काम करता है, मैं वास्तव में neo4j वेब admininistrator का उपयोग कर क्या देख रहा हूं 'देखना' चाहता हूं। तो मैं एक सीएफ आवेदन में डेटा का उपयोग करते समय अपने सीखने neo4j समन्वय कर सकते हैं।

कोड: (वर्क्स)

dbroot = "/tmp/neo4jtest1/"; 
    graphDb = createObject('java', 'org.neo4j.kernel.EmbeddedGraphDatabase'); 
    graphDb.init(dbroot & 'var/myFirstGraphDB'); 

तो मैं neo4j db graph.db से कनेक्ट करने की कोशिश की। हालांकि कोड विफल रहता है।

कोड: (विफल रहता है)

graphDb = createObject('java', 'org.neo4j.kernel.EmbeddedGraphDatabase'); 
    graphDb.init(dbroot & 'graph.db'); 

त्रुटि:

Object instantiation exception. 
    An exception occurred while instantiating a Java object. The class must not be an interface or an abstract class. Error: ''. 

अगर मैं "."graph.db में यह एक "graphdb" neo4j डेटा फ़ोल्डर में पैदा नहीं करता है को दूर , और सफलतापूर्वक इसे जोड़ता है। हालांकि, उस डाटाबेस उनके व्यवस्थापक :(

मैं एक नौसिखिया हूँ, इसलिए आपका जवाब नीचे गूंगा कृपया के साथ नहीं देखा जा सकता है।

+0

तो मूल समस्या यह है कि आप एक ग्राफडीबी फ़ाइल बना सकते हैं लेकिन आप एक .db एक्सटेंशन के साथ एक नहीं बना सकते हैं? और त्रुटि init() पर होती है। इससे संकेत मिलेगा कि "कक्षा" एक init द्वारा आवश्यक है। क्या शायद एक "विस्तार" तर्क है जिसे आप पास करना चाहिए? आपके द्वारा संदर्भित उदाहरण में डीडी शामिल नहीं है। –

+0

मुझे यकीन नहीं है कि मार्क - इस बिंदु पर मैं एक डीएसएन से कनेक्ट करने और इसे एक प्रश्न खिलाकर समानांतर खींचने की कोशिश कर रहा हूं - neo4j जरूरतों के लिए ... दिलचस्प बात यह है कि ग्राफडीबी कनेक्शन के साथ कुछ हुआ, यह TOO है अब उस त्रुटि को फेंक रहा है ... अगर मैं बस "2" जोड़ता हूं तो मैं "graphdb2" पर जा रहा हूं - यह एक नया डीबी फ़ोल्डर आदि बनाता है, और सफलतापूर्वक opporates - लेकिन मुझे यकीन है कि यह भी बदल जाएगा - इसकी लगातार 'लॉक आउट' या कुछ प्राप्त करना - मुझे बस इतना पता नहीं है कि क्यों ... – jpmyob

उत्तर

4

ठीक है, मुझे लगता है कि तुम क्या हासिल करने की कोशिश कर रहे हैं संभव नहीं है। यह है संभव नहीं (जावा के माध्यम से) सीएफ भीतर Neo4J तक पहुँचने के लिए और व्यवस्थापक इंटरफ़ेस काम कर (चेतावनी 1 लागू होता है) है।

आप Neo4J व्यवस्थापक इंटरफ़ेस एडोब सीएफ में Neo4J पैकेज के सभी जार डाल दिया है तो सबसे अधिक संभावना है, तो अपने स्वयं के नियो 4 जे फ़ाइल सिस्टम को देख रहा है। जब आप एंबेडेड सर्वर बनाते हैं तो यह उसी डेटाबेस से कनेक्ट नहीं होता है क्योंकि यह बस नहीं कर सकता है।

एंबेडेड Neo4J मानक डेटाबेस कनेक्शन की तरह काम नहीं करता है। एक एम्बेडेड नियो 4 जे एक निर्देशिका स्थान को पढ़ता है और लिखता है (कुंजी शब्द: निर्देशिका, यह एक फ़ाइल नहीं खोलता है बल्कि उनमें से एक समूह)। कोई दो नियो 4 जे उदाहरण एक ही निर्देशिका स्थान तक पहुंच सकते हैं (चेतावनी 2 लागू होता है)।

ठीक है, चेतावनियां:

1- यह संभव है, सिद्धांत रूप में, मैन्युअल रूप से अप व्यवस्थापक इंटरफ़ेस प्रोग्राम के शुरू करने के लिए इतना है कि यह है कि आप जावा के माध्यम से बनाने के एंबेडेड सर्वर का उपयोग करता।जावा कोड काफी सरल लग रहा है (Using the server (including web administration) with an embedded database से लिया गया):

// Create your embedded graph db somewhere 
src = CreateObject("java", "org.neo4j.server.WrappingNeoServerBootstrapper") 
     .init(graphDb); 
srv.start(); 
// The server is now running 
// until we stop it: 
srv.stop(); 

मैं इस काम के नहीं मिला, ज्यादातर क्योंकि निर्भरता है कि मेरे सेटअप के बाकी के साथ असंगत थे के व्यवस्थापक सर्वर हासा गुच्छा है, तो मैं नहीं कर सकता सलाह दें कि उपरोक्त कितना अच्छा काम करेगा।

2- एक स्थान को पढ़ने/लिखने के लिए नियो 4 जे होना संभव है और उसके बाद एक ही स्थान पढ़ने वाले एकाधिक पढ़ने-योग्य नियो 4 जे (एम्बेडेड रीडऑनलीग्राफडेटाबेस) (लेकिन मैंने कभी कोशिश नहीं की है)।

आपके पास आरईएसटी इंटरफ़ेस का उपयोग करने का विकल्प है - या तो मैन्युअल रूप से, या Neo4J Java REST Binding (थोड़े धीमे, हालांकि) के माध्यम से।

इसमें बहुत गहराई से पहले तैनाती परिदृश्य दस्तावेज पढ़ने योग्य हो सकता है।

वहां कम से कम एक सीएफ/नियो 4 जे पुल है, लेकिन यह बहुत अपूर्ण है। मेरे पास एक है जिस पर मैंने काम किया, लेकिन मुझे यह पता लगाने की ज़रूरत है कि क्या मैं इसे खोल सकता हूं!

+0

+1। महान स्पष्टीकरण। आपकी युक्तियों का उपयोग करके मैंने पुष्टि की कि # 1 काम करता है। – Leigh

+0

हम - कुछ भ्रम प्रतीत होता है - शायद मेरी गलती ... ne04j एक वेब व्यवस्थापक के साथ आता है - लेकिन मैं webadmin per'se - आईडी में टाई करने की कोशिश नहीं कर रहा हूं बस वेबडमिन को "देखने" डीबी में जो मिला है, मैंने सीएफ का उपयोग करने के लिए जुड़ा हुआ है ... शायद यह एक सीओओ प्रश्न से अधिक neo4J प्रश्न है ... जैसा कि मैं सीएफ के माध्यम से डेटा बनाने और इंसेट करने में सक्षम हूं .. मुझे संबंधित डेटा प्राप्त करने पर बहुत सारी गड़बड़ी मिली है ... लेकिन अभी मैं सिर्फ 'वेबडमिन' की 'आंखों' के माध्यम से डेटा देखना चाहता हूं, इसलिए मैं दृष्टि से पुष्टि कर सकता हूं कि यह जा रहा है सही ढंग से – jpmyob

+1

किसी भी नियो 4 जे परिनियोजन में, अपने नियो 4 जे डेटाबेस के डेटा को देखने के लिए वेबडमिन प्राप्त करना केवल उपरोक्त दो तरीकों में से एक के माध्यम से किया जा सकता है। – otupman

2

ओटुपमैन की टिप्पणियों के लिए बस एक छोटा सा जोड़ा। मैं सीएफ से व्यवस्थापक इंटरफ़ेस से जुड़ने के अपने सिद्धांत की पुष्टि कर सकता हूं। सीएफ वर्ग पथ में निम्नलिखित जार जोड़ना मूल बातें प्राप्त करने और चलाने के लिए पर्याप्त था। यदि आप अधिक उन्नत सुविधाओं का उपयोग कर रहे हैं तो आपको अतिरिक्त जार की आवश्यकता हो सकती है। ध्यान दें, मैं बिलाव उपयोग कर रहा हूँ, इसलिए सटीक जार अपने परिवेश के लिए थोड़ा अलग हो सकता

  • neo4j-community-1.7/lib/*.* (पूरी निर्देशिका)
  • neo4j-community-1.7/system/lib: (केवल नीचे जार)

    • एएसएम-3.1 .jar
    • एएसएम-विश्लेषण-3.2.jar
    • asm-commons-3.2.jar
    • एएसएम-वृक्ष की 3.2.jar
    • एएसएम-util-3.2.jar
    • कॉमन्स-विन्यास-1.6.jar
    • जैक्सन कोर-ASL-1.8.3.jar
    • जैक्सन-jaxrs- 1.8.3.jar
    • जैक्सन-नक्शाकार-ASL-1.8.3.jar
    • जर्सी कोर-1.9.jar
    • जर्सी-बहुखण्डीय-1.9.jar
    • जर्सी-server-1.9.jar
    • घाट-6.1.25.jar
    • घाट-util-6.1.25.jar
    • neo4j-server-1.7 स्थैतिक-web.jar
    • neo4j-server-1.7.jar
    • rrd4j-2.0 .7।जार

फिर onApplicationStart

में सर्वर और डेटाबेस शुरू कर दिया
factory = createObject("java", "org.neo4j.graphdb.factory.GraphDatabaseFactory"); 
    dbroot = ExpandPath("/neo4jtest/"); 
    graphDb = factory.newEmbeddedDatabase(dbroot & 'myFirstGraphDB'); 

    Bootstrapper = createObject("java", "org.neo4j.server.WrappingNeoServerBootstrapper"); 
    graphServer = Bootstrapper.init(graphDb); 
    graphServer.start(); 

    application.graphServer = graphServer; 
    application.graphDb = graphDB; 

और बंद कर दिया दोनों onApplicationEnd में

application.graphDb.shutDown(); 
    application.graphServer.stop(); 

संपादित करें: कुछ आगे की जांच के बाद, मुझे लगता है कि बेहतर है ऑनसर्वर स्टार्ट में उन्हें एक बार लोड करने के लिए। फिर उन्हें बंद करने के लिए शटडाउन हुक का उपयोग करें। लेकिन चूंकि यह सिर्फ स्थानीय विकास बॉक्स के लिए है, यह कम महत्वपूर्ण है।

संबंधित मुद्दे