2011-03-22 15 views
5

के साथ काम करना मुझे Php-Java Bridge सेटअप को ठीक से सेट करने में समस्या हो रही है।पीएचपी-जावा ब्रिज

मैं समझाऊंगा कि मैंने क्या किया है।

  • मेरी साइट शुद्ध php में है
  • हमारे भुगतान लेन-देन की प्रक्रिया के लिए हम एक php-जावा पुल
  • मैं सेटअप करने के लिए इस लिंक पर पुल PHP-JAVA BRIDGE INSTALATION.
  • यहाँ मुझे लगता है कि मुझे पता चला इसके बाद सेट करने की आवश्यकता पुल स्थापित करने के लिए एक निजी जेवीएम की जरूरत है।
  • तो पहले मैंने अपने सी-पैनल का उपयोग करके निजी जेवीएम में अपाचे-टोमकैट-6.0.14 स्थापित किया। इंस्टालेशन के बाद उसने मुझे एक डोमेन को निजी जेवीएम में मैप करने के लिए कहा। इसलिए मैंने अपने डोमेन example.com (जो कि एकमात्र विकल्प उपलब्ध है) मैप किया।
  • तो यह मेरी जावा अनुप्रयोग सर्वर के लिए Apache वेब सर्वर से एक यातायात पुनर्निर्देशन सक्षम करने के लिए कहा (वहाँ एक चेक बॉक्स था और मैं इसे क्लिक किया)
  • अंत में यह मुझसे पूछा युद्ध फ़ाइल को तैनात करने (JavaBridge.WAR मेरी फाइल था) और हमेशा कुछ ठीक लगता है
  • अब जब मैं http://example.com/JavaBridge/ पर जाता हूं तो मैं जावब्रिज उदाहरण देख सकता हूं और यह ठीक काम करता है।

अब तक तो अच्छा

अब मेरी समस्या यहाँ शुरू होता है जब मैं php से एक जावा वर्ग फ़ाइल तक पहुँचने का प्रयास करें। एक नमूना test.php वह है जिसे मैं बनाता हूं और इसमें निम्न कोड डालता हूं।

<?php 
     require_once("http://example.com:portnumber/JavaBridge/java/Java.inc"); 
     $System = java("java.lang.System"); 
     echo $System->getProperties(); //This Part echo's correctly and shows the data so it means i can access Java.inc Correctly 

     $path_e24class = getcwd(). '/e24PaymentPipe.class'; //This part fails both test.php and java class file e24PaymentPipe.class are in the same directory in publich_html folder 
     java_require($path_e24class); 
     $pipe = new Java("e24PaymentPipe"); 
     $pipe->setAction("1"); 
?> 

मेरी साइट सामग्री public_html फ़ोल्डर में रहती है और WAR फ़ाइल निजी जेवीएम में तैनात की जाती है।

ये त्रुटि संदेश मिल रहा है।

1) Warning: java_require() not supported anymore. Please use tomcat or jee hot deployment instead 
    Fatal error: Uncaught [[o:Exception]:"java.lang.Exception: CreateInstance failed: new e24PaymentPipe. Cause: java.lang.ClassNotFoundException: e24PaymentPipe VM: [email protected]://java.sun.com/" at: #-10 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358) #-9 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204) #-8 
java.lang.Class.forName0(Native Method) #-7 
java.lang.Class.forName(Class.java:247) #-6 
php.java.bridge.Util.classForName(Util.java:1518) #-5 
php.java.bridge.JavaBridge.CreateObject(JavaBridge.java:445) #-4 
php.java.bridge.Request.handleRequest(Request.java:458) #-3 
php.java.bridge.Request.handleRequests(Request.java:500) #-2 
php.java.bridge.http.ContextRunner.run(ContextRunner.java:145) #-1 
php.java.bridge.ThreadPool$Delegate.run(ThreadPool.java:60) #0 
http://example.com:portnumber/JavaBridge/java/Java.inc(232): java_ThrowExceptionProxyFactory->getProxy(3, 'java.util.Prope...', 'T', false) #1 

अंत में मुझे जावा के बारे में बहुत कुछ पता नहीं है। तो यहां यह नहीं पता कि क्या करना है।

+0

क्या आप 'java_require()' के साथ समस्याओं को हल करने में सक्षम थे? – Kit

उत्तर

3

चरण tutorial द्वारा एक महान कदम है, जो आप अनुसरण कर सकते हैं, जो सब कुछ आवश्यक है दिखाता है! यह थोड़ा पुराना है (2007) लेकिन थोड़ी देर पहले मेरी मदद की।

एक और विकल्प भी है। आप अपाचे टॉमकैट इंस्टॉल कर सकते हैं और वहां अपना युद्ध तैनात कर सकते हैं। जब तक आप पोर्ट सेटिंग्स का सम्मान करते हैं, तब तक आप उसी मशीन पर एक ही समय में अपने httpd चलने के साथ-साथ कई टॉमकैट उदाहरण भी प्राप्त कर सकते हैं। आप उन्हें अपाचे httpd के साथ भी आगे बढ़ा सकते हैं।

+0

उस अद्भुत ट्यूटोरियल के लिए धन्यवाद .... लेकिन फिर भी मुझे कुछ संदेह हैं ... जैसे कि इसे लाइव सर्वर पर स्थापित करने की कोशिश कर रहा हूं जो लिनक्स आधारित है .... और यहां ट्यूटोरियल विंडोज एक्सपी के लिए है .... तो क्या कर सकते हैं यह एक लिनक्स सर्वर के लिए भी पालन किया जा सकता है ... –

+0

@ स्क्रैपी कोको: बढ़िया है कि आपको यह पसंद आया! आप पाएंगे कि चीजें विंडोज और लिनक्स के बीच आश्चर्यजनक रूप से समान हैं। आपको ".so" के साथ ".sll" को प्रतिस्थापित करना होगा, पथ अलगाव वर्ण "\" के साथ "/", और निर्देशिका विभिन्न स्थानों पर स्थित है, लेकिन इसका पालन करना आसान है। सभी खिड़कियों के बाद यूनिक्स में उपयोग किए जाने वाले कई सम्मेलनों की प्रतिलिपि बनाई गई है। –

+0

@ कोस्टिसअवलिस - क्या आप ऊपर उल्लिखित 'requ_java() 'त्रुटि के लिए एक काम जानते हैं? – Kit

0

आप इसे आजमा सकते हैं; JavaBridge.jar को tomcat के lib फ़ोल्डर में डाल दें उदा। अपाचे-बिल्ला-7.0.12/lib।

पुनः प्रारंभ बिल्ला सर्वर और फिर,

$pipe = new java("com.aciworldwide.commerce.gateway.plugins.e24PaymentPipe"); 
$pipe->setAction("1"); 

इस तरह से मैं वस्तु के php संस्करण बनाया।

0

क्यों नहीं आप अपने जावा अनुप्रयोग के classpath में e24PaymentPipe वर्ग रख दिया और नीचे दो पंक्तियों को छोड़ देते:

// $path_e24class = getcwd(). '/e24PaymentPipe.class'; 
// java_require($path_e24class); 

$pipe = new java("fully.qualified.classpath.e24PaymentPipe"); 

आप पीएचपी पक्ष और जावा पक्षीय परिचालनों मिश्रण कर रहे हैं। सिद्धांत रूप में java_require (जिसे बहिष्कृत किया गया है) जावा पक्ष पर काम करने के लिए डिज़ाइन किया गया था। आप एक PHP पक्ष पथ निर्दिष्ट कर रहे हैं।

2

आप इस कोशिश कर सकते हैं:

  1. पैकेज जार करने के लिए अपने कोड, और java.ext.dirs आप JavaBridge.log में पाया जा सकता है जो
  2. java.ext से संबंधित वर्ग पुस्तकालयों कॉपी करने के लिए इसे कॉपी .dirs
  3. JavaBridge

अच्छी किस्मत की सेवा को पुनः आरंभ!

<?php require_once("JavaBridge/java/Java.inc"); 
    try {  
    $hd = new java("hdfs.HDFS");  
    $hd->get("hdfs://master:9000/user/hadoop/test-in/logo_cn.png", "/home/hadoop/1.png"); 
    } catch (JavaException $ex) { echo "An exception occured: "; echo $ex; echo "<br>\n";} 
?> 
0

आप अपने आप को e24PaymentPipe पुस्तकालय का एक pure PHP implementation का उपयोग करके दु: ख का एक बहुत बचा सकता है।

अस्वीकरण

लिंक लायब्रेरी के अपने GitHub रेपो करने के लिए है, लेकिन मैं इसे नहीं लिखा था। मूल क्रेडिट के लिए रीडेमे देखें।

2

आप इस php implementation on github का उपयोग कर सकते हैं जो php 5.3 के साथ काम करता है।

अधिक जानकारी के लिए गिट रीडमे पर क्रेडिट देखें।

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