2012-12-06 47 views
1

我有PHP和在Windows和Tomcat 7.0上设置的PHP/Java桥接。一切都很好。weblogic jmx tomcata php/java桥梁和获得t3协议工作

不过,我试图写一个PHP文件与Java调用连接到安装在我的Windows 7机器上我的Weblogic服务器玩弄添加/删除用户/组等

这是我跟着:http://docs.oracle.com/cd/E13222_01/wls/docs90/jmx/accessWLS.html我也看了这个http://weblogic-wonders.com/weblogic/2009/10/11/creating-users-in-weblogic-server-embedded-ldap-programatically/(但第二个我在java:comp/env/jmx/runtime行中得到一个错误)

但是,我无法让我的设置识别“t3”协议连接到我的weblogic。奇怪的是我可以通过使用jython的t3协议在单独的独立脚本中连接到控制台。

上面的第一个链接中有一节用于确保将wljmxclient.jar添加到类路径中。我建立了一个类路径来添加它。在连接到我的Weblogic服务器来设置我的类路径之前,我甚至使用PHP来执行Weblogic的setWLSenv.cmd。 。 。它显示正在添加的问题的jar文件。仍然无法工作。然后我将jar文件复制到JavaBirde/WEB-INF/lib文件夹中。仍然不会'工作。

我曾尝试IIOP协议,但后来我开始了一个错误的新路径,其中“未在此上下文中绑定”被指示。我尝试在上面的Oracle文档链接中提到的3个Mservers之间切换。那里也没有运气。

我看到其他人遇到了这个“t3协议不支持”的消息,但我没有看到任何解决方案。

这里是我的代码:

<?php 

require_once("java/Java.inc"); 

$output=exec("C:\Oracle\Middleware\wlserver_12.1\server\bin\setWLSenv.cmd"); 

$protocol = "t3"; 
$hostname = "localhost"; 
$port="7001"; 
$jndiroot="/jndi/"; 
$mserver="weblogic.management.mbeanservers.domainruntime"; 
$united = $jndiroot.$mserver; 
$serviceURL = new java("javax.management.remote.JMXServiceURL",$protocol, $hostname, $port,$united); 

$h = new java("java.util.Hashtable"); 
$h->put("javax.naming.Context.SECURITY_PRINCIPAL", "myUID"); 
$h->put("javax.naming.Context.SECURITY_CREDENTIALS", "myPWD"); 
$h->put("javax.management.remote.JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES", 
     "weblogic.management.remote"); 

$connector = new java("javax.management.remote.JMXConnectorFactory"); 

$connector->connect($serviceURL,$h); 

?> 

回答

1

这是怎么了,我终于连接到我的Weblogic:

1)我安装了Tomcat 7.0的压缩文件,而不是安装程序和手动设置。在我的

setenv.bat file it looks like: 
set CATALINA_HOME=C:\Program Files (x86)\Apache Software Foundation\apache-tomcat-7.0.34 
set CATALINA_BASE=C:\Program Files (x86)\Apache Software Foundation\apache-tomcat-7.0.34 
set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.7.0_09 
set JRE_HOME=C:\Program Files (x86)\Java\jdk1.7.0_09\jre 
set JAVA_OPTS=-Djava.ext.dirs=C:\Oracle\Middleware\wlserver_12.1\server\lib 
set CLASSPATH=.;C:\Oracle\Middleware\wlserver_12.1\server\lib\wljmxclient.jar 

exit /b 0 

2)I启用IIOP协议在WebLogic通过WebLogic控制台,并添加了用户ID /密码,我在NUM 3用于用户ID /密码在Tomcat 7

3)我的PHP脚本与PHP/Java桥(不是JMXServerURL。无处我才发现你不得不使用“RMI”作为协议“)

$serviceURL = new java("javax.management.remote.JMXServiceURL","rmi","localhost","7001","/jndi/iiop://localhost:7001/weblogic.management.mbeanservers.edit"); 

//"service:jmx:iiop://localhost:7001/jndi/weblogic.management.mbeanservers.edit"); 

$env = new java("java.util.Hashtable"); 
$env->put("javax.management.remote.JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES","weblogic.management.remote"); 
$env->put("javax.naming.Context.SECURITY_PRINCIPAL", "myuserID"); 
$env->put("javax.naming.Context.SECURITY_CREDENTIALS", "mypassword"); 

$jmxCon = java("javax.management.remote.JMXConnectorFactory")->newJMXConnector($serviceURL, $env); 
$jmxCon->connect(); 
$connection = $jmxCon->getMBeanServerConnection(); 

$mbeans = $connection->queryNames(null,null); 

foreach($mbeans as $key=>$value) { 
echo $key. "=". $value; 
} 

它连接并打印出所有MBean为我管理服务器和我创建的两个托管服务器用于测试。