2017-02-07 3 views
0

PHP Java Bridge를 설정하려고하는데 PHP에서 Java Method를 호출 할 수 있지만 Java 클래스에서 요청 객체 (HttpServletRequest)를 가져올 수 없습니다. 어떻게해야합니까?PHP Java Bridge에서 HttpServletRequest 객체를 얻는 방법은 무엇입니까?

내 PHP 소스는 다음과 같습니다.

<?php require_once("http://localhost:8080/PJBridge/java/Java.inc"); 
echo "PHP JAVA Bridge -- Calculator Test Application <br>" 

$Calc= new java("test.math.Calc"); 
$val1 = 20; 
$val2 = 10; 
echo "<br> Addition of $val1 and $val2 is"; 
echo $Calc->add($val1,$val2); 


$hello = new java("test.Hello"); 
echo "<br>"; 
echo $hello->sayHello("PHP from Java"); 
echo "<br>"; 
?> 

자바 클래스의 소스는 다음과 같다 : -

public class Hello implements ServletRequestAware{ 


HttpServletRequest request; 
public Hello(){ 

} 

@Override 
public void setServletRequest(HttpServletRequest request) { 
    this.request = request; 

} 



public String sayHello(String name){ 
    return "Hello " + name ; 
} 
} 

내가 예상 된 결과를 얻고있다하지만 난 그것을 얻을 수 없습니다하지만 요청 개체에 액세스해야하므로 클라이언트 IP가 필요합니다.

+0

Eh? 'HttpServletRequest'는 서블릿에 직접 제공됩니다. – EJP

+0

여기에 물어 보는 것은 매우 가난한 질문 일 수도 있지만 매번 null 요청 개체가 표시됩니다. 웹 응용 프로그램으로 응용 프로그램을 실행하면 요청 객체가 표시되지만 요청이 PHP Java Bridge를 사용하여 PHP에 의해 시작되면 null입니다. – dpilwal

+0

클라이언트와 서버의 코드 소스를 보면 client_ip이 어디에 등록되어 있고 서블릿에서 사용할 수 있는지 알 수 없습니다. (클라이언트 IP로, 나는 사용할 수있는 것을 의미한다 : $ _SERVER [ 'REMOTE_ADDR']) 메소드 sayHello (client_ip)에 값을 보내거나 java_session()을 사용한다고 가정한다. 궁금한 점이 있으면 [시도] (https://github.com/belgattitude/soluble-japha/blob/master/test/src/SolubleTest/Japha/Bridge/Driver/DriverContextTest.php#L105)를 살펴보십시오. 나는 그것을 시도했다. –

답변

0

는 HttpServletRequest의에 대한

에 대답 할 수 없습니다 그러나 당신의 아이디어는 자바 측에 클라이언트 원격 IP를 전송하는 경우 ... 다른 길을 갈 수있게 할 수도 있습니다. AFAIK PHPJavaBridge는 원격 사용자 IP가 아닌 클라이언트의 IP 주소 (Java.inc - 일반적으로 localhost를 호출하는 PHP 스크립트) 만 알 수 있습니다. 그래서 HttpServletRequest를 고치더라도 기대하는 바를 가지지 못할 것입니다.

이 방법

<?php 
$javaObject = new java('...'); 
$javaObject->log('username', $_SERVER['REMOTE_ADDR']); 

에서 원격 클라이언트 IP를 보내거나 자바에서 설정 : 내가해야 할 일을했을 경우에 나는 하나를 사용 것,

... 물론 잘못 될 수도 있습니다 세션

<?php 
java_session('remote_ip', $_SERVER['REMOTE_ADDR']); 

나는 더 이상 Java.inc을 사용하지 않는, 그래서 세션의 구문에 대한 정확히 모르겠지만, 당신이 정보를 정기적으로 찾고 있다면, soluble-japha session usage 및에 봐. 그것은 당신을 도울지도 모르지만, 구문은 다르지만 거의 호환됩니다.