Weblogic10与Jolt结合使用

来源:互联网 发布:数据魔方关键词 编辑:程序博客网 时间:2024/06/11 08:26

Weblogic10Jolt结合使用

JoltBea Tuxedo自带的jar组件,在Tuxedo9.0及以后的安装过程中都可以看到安装的Jolt组件,java通过Jolt调用tuxedo服务实现外部应用之间通信。

本人根据仅根据实际操作情况,整理java通过调用weblogic jolt连接tuxedo服务,获取文件步骤如下:

1、  启动weblogic,访问console,配置相应jolt参数:

a、新建jolt连接池:

连接池名称

地址

最大连接数

最小连接数

TuxedoFilePool

//192.168.1.110:1800

10

1

 

b、配置启动停止类

名称

类型

ClassName

PoolManagerShutDown

shutdown

Bea.jolt.poolservlet.weblogic.PoolManagerShutDown

PoolManagerStartUp

startup

Bea.jolt.poolservlet.weblogic.PoolManagerStartUp

 

2、  加载配置weblogic启动加载jolt相应jar包,这个地方大家可以注意下,可以有两种方式加载对应jar包:

1)  domian/bin目录下找到startWeblogic.sh文件在

CLASSPATH=”${SAVE_CLASSPATH}” SAVE_CLASSPATH之间增加如下代码:

LIB_CLASSPATH="${LIB_PATH}/joit.jar:${LIB_PATH}/joltjse.jar:${LIB_PATH}/joltwls.jar"

CLASSPATH="${LIB_CLASSPATH}:${CLASSPATH}"

export CLASSPATH

2)  直接把joit.jarjoltjse.jarjoltwls.jar三个jar包放到domain/lib目录下,本人觉得这样更方便。

同时还得注意包冲突,

如果工程总weblogic.xml配置了如下属性

<prefer-web-inf-classes>true</prefer-web-inf-classes>

则当weblogic启动时时首先加载类路径下的包,那就会和上述配置的jolt包加载存在冲突,解决冲突本人办法就是去掉工程中对应的jolt对应jar包。

3、  java代码获取jolt连接池对象处理业务,主要代码如下:

 

protected SessionPool initJoltPool(String poolName)throws JoltException {

        Logger logger =Logger.getLogger(getClass().getName());

        SessionPool joltSession;

        logger.info("开始获取jolt sessionPoolManager");

        SessionPoolManager sPoolManager = SessionPoolManager.poolmgr;

        if (sPoolManager ==null) {

        logger.info("jolt sessionPoolManager获取失败");

        }

        joltSession = sPoolManager.getSessionPool(poolName);

        if (joltSession ==null) {

            thrownew JoltException("Error intializing Jolt session pool " + poolName);

        }

        return joltSession;

    }

 

public byte[] tuxedoGetFileContent(String branchId, String fileName, int isEncrypted, char nodeType, char tranType, int flagSaveAsBrch) throws JoltException, IOException {

        Logger logger = Logger.getLogger(getClass().getName());

        byte[] ret = null;

        if (fileName.length() == 0) {

            logger.error("文件名为空");

            return null;

        }

// 获取JOLT连接池

protectedSessionPool _joltSession = initJoltPool(_poolName);

        logger.debug("start to download file from server...");

 

        ByteArrayOutputStream fis = null;

        try {

            fis = new ByteArrayOutputStream();

            while (true) {

                DataSet indata = new DataSet();

                indata.setValue("COMMAND", new Integer(FILE_DOWNLOAD));

                indata.setValue("ECREPTNEED", new Integer(isEncrypted));

                indata.setValue("FILE_NAME", fileName);

                indata.setValue("BRANCHNO", branchId);

 

                indata.setValue("FILE_OFFSET", new Integer(offSet));

                indata.setValue("SAVEASBRCH", new Integer(flagSaveAsBrch));

 

                byte[] in = new byte[MAX_BLOCK_SIZE];

 

                Result outdata = _joltSession.call(fileName, indata, null);

 

                byte[] outbuf = (byte[]) outdata.getValue("FILE_DATA", null);

                if (outbuf == null || outbuf.length == 0) {

                    logger.debug(fileName + ":Over with offset " + offSet);

                    if (offSet == 0) {

                        debug(outdata);

                    }

                    break;

                }

                fis.write(outbuf);

            }

 

            logger.debug(fileName + ":Content length:" + fis.size());

            ret = fis.toByteArray();

            fis.close();

        }  catch (IOException e) {

            logger.debug("传输文件失败:" + file.getAbsolutePath(), e);

            throw e;

        } finally {

            try {

                fis.close();

            } catch (Exception e) {

            }

        }

        logger.debug(fileName + ":end to download filefrom server...");

        return ret;

    }

 

 

4、上述步骤都没问题的话,jolt使用基本ok了,最后部署应用同时启动weblogic,登录console查看jolt连接池状态,至少会有一个连接是被active,则配置成功。

原创粉丝点击