OSB ALSBConfiguration MBean使用java导入配置
我正在尝试使用java在OSB中导入配置sbconfig.jar以进行自动化测试。在此之前,我用java实现了FindAndReplace操作。 但是,在从同一篇文章导入配置的情况下,当我运行呈现的代码时,我得到一个错误 我想做什么OSB ALSBConfiguration MBean使用java导入配置,java,oracle,osb,wlst,alsb,Java,Oracle,Osb,Wlst,Alsb,我正在尝试使用java在OSB中导入配置sbconfig.jar以进行自动化测试。在此之前,我用java实现了FindAndReplace操作。 但是,在从同一篇文章导入配置的情况下,当我运行呈现的代码时,我得到一个错误 我想做什么 连接到OSB(Oracle服务总线11.1) 读取文件 创建会话 导入准备好的文件 激活会话 关于第四项,我有一个错误: Cannot import to deployed configuration 也许有人已经实现了这样的事情 我将非常感谢你的帮助 packa
Cannot import to deployed configuration
也许有人已经实现了这样的事情
我将非常感谢你的帮助
package update.configuration.osb;
import com.bea.wli.config.Ref;
import com.bea.wli.config.customization.FindAndReplaceCustomization;
import com.bea.wli.config.env.EnvValueQuery;
import com.bea.wli.config.importexport.ImportResult;
import com.bea.wli.config.resource.Diagnostics;
import com.bea.wli.sb.management.configuration.*;
import com.bea.wli.sb.util.EnvValueTypes;
import com.bea.wli.config.customization.Customization;
import java.io.*;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Hashtable;
import java.util.List;
import javax.management.*;
import javax.management.remote.*;
import javax.naming.Context;
import weblogic.management.jmx.MBeanServerInvocationHandler;
import weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean;
import com.bea.wli.sb.management.importexport.ALSBJarInfo;
import com.bea.wli.sb.management.importexport.ALSBImportPlan;
import java.util.Map;
public class OSBConfigUpdateNew {
private static JMXConnector initConnection(String hostname, int port,
String username, String password) throws IOException,
MalformedURLException {
JMXServiceURL serviceURL = new JMXServiceURL("t3", hostname, port,
"/jndi/" + DomainRuntimeServiceMBean.MBEANSERVER_JNDI_NAME);
Hashtable<String, String> h = new Hashtable<String, String>();
h.put(Context.SECURITY_PRINCIPAL, username);
h.put(Context.SECURITY_CREDENTIALS, password);
h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES,
"weblogic.management.remote");
return JMXConnectorFactory.connect(serviceURL, h);
}
static private void simpleImportExport(String importFileName, String host, int port,
String username, String password) {
JMXConnector conn = null;
SessionManagementMBean sm = null;
File importFile = new File(importFileName);
byte[] bytes = readBytes(importFile);
String sessionName = "newsession";
String statusmsg = "";
try {
conn = initConnection(host, port, username, password);
MBeanServerConnection mbconn = conn.getMBeanServerConnection();
DomainRuntimeServiceMBean domainService = (DomainRuntimeServiceMBean) MBeanServerInvocationHandler
.newProxyInstance(mbconn, new ObjectName(
DomainRuntimeServiceMBean.OBJECT_NAME));
sm = (SessionManagementMBean) domainService.findService(
SessionManagementMBean.NAME, SessionManagementMBean.TYPE,
null);
sm.createSession(sessionName);
ALSBConfigurationMBean alsbSession = getConfigMBean(sessionName, conn);
// ALSBConfigurationMBean alsbSession = (ALSBConfigurationMBean) domainService.findService(ALSBConfigurationMBean.NAME + "." + "newsession", ALSBConfigurationMBean.TYPE, null);
try {
alsbSession.uploadJarFile(bytes);
ALSBJarInfo jarInfo = alsbSession.getImportJarInfo();
ALSBImportPlan importPlan = jarInfo.getDefaultImportPlan();
ImportResult result = alsbSession.importUploaded(importPlan);
if (result.getImported().size() > 0) {
System.out.println("The following resources have been successfully imported.");
for (Ref ref : result.getImported()) {
System.out.println("\t" + ref);
}
}
if (result.getFailed().size() > 0) {
System.out.println("The following resources have failed to be imported.");
for (Map.Entry<Ref, Diagnostics> e : result.getFailed().entrySet()) {
Ref ref = e.getKey();
Diagnostics d = e.getValue();
System.out.println("\t" + ref + ". reason: " + d);
}
System.out.println("Discarding the session.");
sm.discardSession(sessionName);
System.exit(1);
}
} catch (Exception e) {
e.printStackTrace();
}
try {
sm.activateSession(sessionName, "description");
ALSBConfigurationMBean alsbcore = getConfigMBean(null, conn);
byte[] contentsProj = alsbcore.exportProjects(Collections.singleton(Ref.makeProjectRef("Project")), null);
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception ex) {
if (null != sm) {
try {
sm.discardSession(sessionName);
} catch (Exception e) {
System.out.println("Able to discard the session");
}
}
statusmsg = "Not able to perform the operation";
ex.printStackTrace();
} finally {
if (null != conn)
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
private static ALSBConfigurationMBean getConfigMBean(String sessionName, JMXConnector conn) throws Exception {
MBeanServerConnection mbconn = conn.getMBeanServerConnection();
DomainRuntimeServiceMBean domainService =
(DomainRuntimeServiceMBean) MBeanServerInvocationHandler.newProxyInstance(
mbconn, new ObjectName(DomainRuntimeServiceMBean.OBJECT_NAME));
return (ALSBConfigurationMBean) domainService.findService(
ALSBConfigurationMBean.NAME,
ALSBConfigurationMBean.TYPE, null);
}
private static byte[] readBytes(File importFile) {
ByteArrayOutputStream ous = null;
InputStream ios = null;
try {
byte[] buffer = new byte[4096];
ous = new ByteArrayOutputStream();
ios = new FileInputStream(importFile);
int read = 0;
while ((read = ios.read(buffer)) != -1)
ous.write(buffer, 0, read);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (ous != null)
ous.close();
} catch (IOException e) {
}
try {
if (ios != null)
ios.close();
} catch (IOException e) {
}
}
return ous.toByteArray();
}
// private static Ref constructRef(String refType, String serviceuri) {
// Ref ref = null;
// String[] uriData = serviceuri.split("/");
// ref = new Ref(refType, uriData);
// return ref;
// }
public static void main(String[] args) {
simpleImportExport("C:\\sbconfig.jar", "127.0.0.1",
7001, "user", "password");
}
}
package update.configuration.osb;
导入com.bea.wli.config.Ref;
导入com.bea.wli.config.customization.findandReplaceComization;
导入com.bea.wli.config.env.EnvValueQuery;
导入com.bea.wli.config.importexport.ImportResult;
导入com.bea.wli.config.resource.Diagnostics;
导入com.bea.wli.sb.management.configuration.*;
导入com.bea.wli.sb.util.EnvValueTypes;
导入com.bea.wli.config.customization.customization;
导入java.io.*;
导入java.net.MalformedURLException;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.Hashtable;
导入java.util.List;
导入javax.management.*;
导入javax.management.remote.*;
导入javax.naming.Context;
导入weblogic.management.jmx.MBeanServerInvocationHandler;
导入weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceBean;
导入com.bea.wli.sb.management.importexport.ALSBJarInfo;
导入com.bea.wli.sb.management.importexport.ALSBImportPlan;
导入java.util.Map;
公共类OSBConfiguUpdateNew{
专用静态JMXConnector initConnection(字符串主机名、int端口、,
字符串用户名、字符串密码)引发IOException,
畸形感觉{
JMXServiceURL serviceURL=新的JMXServiceURL(“t3”,主机名,端口,
“/jndi/”+domainRuntimeServiceBean.MBEANSERVER\u jndi\u NAME);
Hashtable h=新的Hashtable();
h、 put(Context.SECURITY\u主体,用户名);
h、 put(Context.SECURITY\u凭证、密码);
h、 放置(JMXConnectorFactory.PROTOCOL_PROVIDER_包,
“weblogic.management.remote”);
返回JMXConnectorFactory.connect(serviceURL,h);
}
静态私有void simpleImportExport(字符串importFileName、字符串主机、int端口、,
字符串用户名、字符串密码){
JMXConnector conn=null;
SessionManagementMBean sm=null;
文件导入文件=新文件(导入文件名);
字节[]字节=读取字节(导入文件);
字符串sessionName=“newsession”;
字符串statusmsg=“”;
试一试{
conn=initConnection(主机、端口、用户名、密码);
MBeanServerConnection mbconn=conn.getMBeanServerConnection();
DomainRuntimeServiceBean domainService=(DomainRuntimeServiceBean)MBeanServerInvocationHandler
.newProxyInstance(mbconn,新对象名(
DomainRuntimeServiceBean.OBJECT_NAME));
sm=(SessionManagementMBean)domainService.findService(
SessionManagementMBean.NAME、SessionManagementMBean.TYPE、,
无效);
sm.createSession(sessionName);
AlsbConfiguration MBean alsbSession=getConfigMBean(会话名称,conn);
//AlsbConfiguration MBean alsbSession=(AlsbConfiguration MBean)domainService.findService(AlsbConfiguration MBean.NAME++“+”newsession”,AlsbConfiguration MBean.TYPE,null);
试一试{
上传文件(字节);
ALSBJarInfo=alsbSession.getImportJarInfo();
ALSBImportPlan importPlan=jarInfo.getDefaultImportPlan();
ImportResult结果=alsbSession.importUploaded(importPlan);
如果(result.getImported().size()>0){
System.out.println(“以下资源已成功导入”);
for(Ref:result.getImported()){
System.out.println(“\t”+ref);
}
}
如果(result.getFailed().size()>0){
System.out.println(“以下资源导入失败”);
对于(Map.Entry e:result.getFailed().entrySet()){
Ref=e.getKey();
诊断d=e.getValue();
System.out.println(“\t”+ref+”。原因:“+d”);
}
System.out.println(“丢弃会话”);
sm.Session(会话名称);
系统出口(1);
}
}捕获(例外e){
e、 printStackTrace();
}
试一试{
sm.激活会话(会话名称,“描述”);
ALSBConfiguration MBean alsbcore=getConfigMBean(空,conn);
字节[]contentsProj=alsbcore.exportProjects(Collections.singleton(Ref.makeProjectRef(“项目”)),null;
}捕获(例外e){
e、 printStackTrace();
}
}捕获(例外情况除外){
如果(空!=sm){
试一试{
sm.Session(会话名称);
}捕获(例外e){
System.out.println(“能够放弃会话”);
}
}
statusmsg=“无法执行该操作”;
例如printStackTrace();
}最后{
如果(空!=conn)
试一试{
康涅狄格州关闭();
}捕获(例外e){
e、 printStackTrace();
}
}
}
私有静态ALSBConfiguration MBean getConfigMBean(字符串sessionName,JMXConnector conn)引发异常{
MBeanServerConnection mbconn=conn.getMBeanServerConnection();
DomainRuntimeServiceBean域服务=