[Resin] PHP in Java: Natty & Juacompe discussion
Posted by natty on September 24, 2008
เนื่องมาจาก natty ที่พอจะมีความรู้เรื่อง resin เท่าหางอึ่ง + PHP อยู่บ้าง บวกกับ juacompe ที่อัดแน่นไปด้วยความรู้เกี่ยวกับ server ที่ใช้ run java ทำให้วันนี้ก็เกิดความเข้าใจมากขึ้นกับ PHP in Java ใน resin
หากเราต้องการทำให้ java ของเราถูกเรียกโดย PHP ได้ ต้องทำให้ class นั้น extends AbstractQuercusModule และมี method ที่รับ parameter env ซึ่งเป็น quercus environment resources หรือไม่ก็ต้องสร้าง class ไว้แล้วให้มาสร้าง instant อยู่ใน class นี้
code ด้านล่างเป็นเป็น code ที่สร้าง method ขึ้นมาเพื่อให้ถูกเรียกจาก PHP ได้ ชื่อ method ว่า hello_test โดยจะเห็นว่ามันจะรับตัวแปร env ด้วย โดย class นี้อยู่ใน package example
package example;
import com.caucho.quercus.env.Env;
import com.caucho.quercus.module.AbstractQuercusModule;
public class HelloModule extends AbstractQuercusModule {
/*
** Notice the careful use of the naming
** convention hello_test. This is done
** in order to prevent name collisions
** among different libraries.
**
** @param env provides access to Quercus environment resources
** @param name
*/
public String hello_test(Env env, String name)
{
env.println("inside HelloModule hello_test()");
return "Hello, " + name;
}
}
สิ่งที่สำคัญคือ ต้องสร้างไฟล์ชื่อ com.caucho.quercus.QuercusModule ไว้ที่ classes/META-INF/services โดยใส่ชื่อ package.class เอาไว้
example.HelloModule
ตอนหน้าค่อยต่ออีก….นี่เป็นเพียง study ยังไม่ได้ทดสอบเลยว่าทำต่างจากนี้แล้วจะพังป่าว