1

我在 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 行上出现错误)

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

上面第一个链接中有一个部分可确保将 wljmxclient.jar 添加到类路径中。我设置了一个类路径来添加它。我什至在连接到我的 Weblogic 服务器之前使用 PHP 来执行 Weblogic 的 setWLSenv.cmd 以设置我的 classpath 。. . 它显示了正在添加的 jar 文件。还是不行。然后我将 jar 文件复制到 JavaBirde/WEB-INF/lib 文件夹。还是不行。

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

我看到其他人遇到了这个“不支持 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);

?>
4

1 回答 1

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 中用于用户 ID/密码的用户 ID/密码

3) 我在 Tomcat 7 上的 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。

于 2012-12-19T16:47:51.660 回答