我在Windows和Tomcat 7.0上设置了PHP和PHP / Java桥。一切都好。
但是,我正在尝试编写一个带有java调用的php文件来连接到我的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 line上得到错误)
但是,我无法让我的设置识别连接到我的weblogic的“t3”协议。奇怪的是我可以通过t3协议使用jython在一个单独的独立脚本中连接到控制台。
上面的第一个链接中有一个部分,以确保将wljmxclient.jar添加到类路径中。我设置了一个类路径来添加它。我甚至在连接到我的Weblogic服务器之前使用PHP执行Weblogic的setWLSenv.cmd来设置我的类路径。 。 。它显示了有问题的jar文件被添加。仍然行不通。然后我将jar文件复制到JavaBirde / WEB-INF / lib文件夹。仍然不会工作。
我确实尝试过IIOP协议,但后来我开始了一个新的错误路径,其中“未在此上下文中绑定”。我尝试在上面的Oracle doc链接中提到的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);
?>
答案 0 :(得分:1)
这就是我最终连接到我的Weblogic的方式:
1)我安装了Tomcat 7.0 zip文件而不是安装程序,并手动设置它。在我的
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)我通过weblogic控制台在weblogic中启用了IIOP协议,并添加了我在num 3中用于userID /密码的用户ID /密码
3)我的PHP脚本在Tomcat 7上使用PHP / Java Bridge(而不是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;
}
它为我的管理服务器和我为测试创建的两个托管服务器连接并打印出所有mbeans。