解决LOB(blob与clob)的问题

解决LOB(blob与clob)的问题
解决LOB(blob与clob)的问题

通过JDBC操纵Oracle数据库LOB字段的分析

在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了。因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种类型的字段,很灵活,适用于数据量非常大的业务领域(如图象、档案等)。而LONG、LONG RAW等类型的字段,虽然存储容量也不小(可达2GB),但由于一个表中只能有一个这样类型的字段的限制,现在已很少使用了。

LOB类型分为BLOB和CLOB两种:BLOB即二进制大型对象(Binary Large Object),适用于存贮非文本的字节流数据(如程序、图象、影音等)。而CLOB,即字符型大型对象(Character Large Object),则与字符集相关,适于存贮文本型的数据(如历史档案、大部头著作等)。下面以程序实例说明通过JDBC操纵Oracle数据库LOB类型字段的几种情况。

先建立如下两个测试用的数据库表,Power Designer PD模型如下:

建表SQL语句为:

CREATE TABLE TEST_CLOB ( ID NUMBER(3), CLOBCOL CLOB)

CREATE TABLE TEST_BLOB ( ID NUMBER(3), BLOBCOL BLOB)

一、CLOB对象的存取

1、往数据库中插入一个新的CLOB对象

public static void clobInsert(String infile) throws Exception

{

/* 设定不自动提交*/

boolean defaultCommit = conn.getAutoCommit();

conn.setAutoCommit(false);

try {

/* 插入一个空的CLOB对象*/

stmt.exec

uteUpdate("INSERT INTO TEST_CLOB VALUES (’111’, EMPTY_CLOB())");

/* 查询此CLOB对象并锁定*/

ResultSet rs = stmt.executeQuery("SELECT CLOBCOL FROM TEST_CLOB WHERE ID=’111’ FOR UPDATE");

while (rs.next()) {

/* 取出此CLOB对象*/

oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("CLOBCOL");

/* 向CLOB对象中写入数据*/

BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream()); BufferedReader in = new BufferedReader(new FileReader(infile));

int c;

while ((c=in.read())!=-1) {

out.write(c);

}

in.close();

out.close();

}

/* 正式提交*/

https://www.360docs.net/doc/32463868.html,mit();

} catch (Exception ex) {

/* 出错回滚*/

conn.rollback();

throw ex;

}

/* 恢复原提交状态*/

conn.setAutoCommit(defaultCommit);

}

2、修改CLOB对象(是在原CLOB对象基础上进行覆盖式的修改)

public static void clobModify(String infile) throws Exception

{

/* 设定不自动提交*/

boolean defaultCommit = conn.getAutoCommit();

conn.setAutoCommit(false);

try {

/* 查询CLOB对象并锁定*/

ResultSet rs = stmt.executeQuery("SELECT CLOBCOL FROM TEST_CLOB WHERE ID=’111’ FOR UPDATE");

while (rs.next()) {

/* 获取此CLOB对象*/

oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("CLOBCOL");

/* 进行覆盖式修改*/

BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream()); BufferedReader in = new BufferedReader(new FileReader(infile));

int c;

while ((c=in.read())!=-1) {

out.write(c);

}

in.close();

out.close();

}

/* 正式提交*/

https://www.360docs.net/doc/32463868.html,mit();

} catch (Exception ex) {

/* 出错回滚*/

conn.rollback();

throw ex;

}

/* 恢复原提交状态*/

conn.setAutoCommit(defaultCommit);

}

3、替换CLOB对象(将原CLOB对象清除,换成一个全新的CLOB对象)

public static void clobReplace(String infile) throws Exception

{

/* 设定不自动提交*/

boolean defaultCommit = conn.getAutoCommit();

conn.setAutoCommit(false);

try {

/* 清空原CLOB对象*/

stmt.executeUpdate("UPDATE TEST_CLOB SET CLOBCOL=EMPTY_CLOB() WHERE ID=’111’");

/* 查询CLOB对象并锁定*/

ResultSet rs = stmt.executeQuery("SELECT CLOBCOL FROM TES T_CLOB WHERE ID=’111’ FOR UPDATE");

while (rs.next()) {

/* 获取此CLOB对象*/

oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("CLOBCOL");

/* 更新数据*/

BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream()); BufferedReader in = new BufferedReader(new FileReader(infile));

int c;

while ((c=in.read())!=-1) {

out.write(c);

}

in.close();

out.close();

}

/* 正式提交 */

https://www.360docs.net/doc/32463868.html,mit();

} catch (Exception ex) {

/* 出错回滚 */

conn.rollback();

throw ex;

}

/* 恢复原提交状态 */

conn.setAutoCommit(defaultCommit);

}

4、CLOB对象读取

public static void clobRead(String outfile) throws Exception

{

/* 设定不自动提交 */

boolean defaultCommit = conn.getAutoCommit();

conn.setAutoCommit(false);

try {

/* 查询CLOB对象 */

ResultSet rs = stmt.executeQuery("SELECT * FROM TEST_CLOB WHERE ID=’111’");

while (rs.next()) {

/* 获取CLOB对象 */

oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("CLOBCOL");

/* 以字符形式输出 */

BufferedReader in = new BufferedReader(clob.getCharacterStream());

BufferedWriter out = new BufferedWriter(new FileWriter(outfile));

int c;

while ((c=in.read())!=-1) {

out.write(c);

}

out.close();

in.close();

}

} catch (Exception ex) {

conn.rollback();

throw ex;

}

/* 恢复原提交状态*/

conn.setAutoCommit(defaultCommit);

}

二、BLOB对象的存取

1、向数据库中插入一个新的BLOB对象

public static void blobInsert(String infile) throws Exception

{

/* 设定不自动提交*/

boolean defaultCommit = conn.getAutoCommit();

conn.setAutoCommit(false);

try {

/* 插入一个空的BLOB对象*/

stmt.executeUpdate("INSERT INTO TEST_BLOB VALUES (’222’, EMPTY_BLOB())");

/* 查询此BLOB对象并锁定*/

ResultSet rs = stmt.executeQuery("SELECT BLOBCOL FROM TEST_BLOB WHERE ID=’222’ FOR UPDATE");

while (rs.next()) {

/* 取出此BLOB对象*/

oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");

/* 向BLOB对象中写入数据*/

BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream()); BufferedInputStream in = new BufferedInputStream(new FileInputStream(infile));

int c;

while ((c=in.read())!=-1) {

out.write(c);

in.close();

out.close();

}

/* 正式提交*/

https://www.360docs.net/doc/32463868.html,mit();

} catch (Exception ex) {

/* 出错回滚*/

conn.rollback();

throw ex;

}

/* 恢复原提交状态*/

conn.setAutoCommit(defaultCommit);

}

2、修改BLOB对象(是在原BLOB对象基础上进行覆盖式的修改)

public static void blobModify(String infile) throws Exception

{

/* 设定不自动提交*/

boolean defaultCommit = conn.getAutoCommit();

conn.setAutoCommit(false);

try {

/* 查询BLOB对象并锁定*/

ResultSet rs = stmt.executeQuery("SELECT BLOBCOL FROM TEST_BLOB WHERE ID=’222’ FOR UPDATE");

while (rs.next()) {

/* 取出此BLOB对象*/

oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");

/* 向BLOB对象中写入数据*/

BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream()); BufferedInputStream in = new BufferedInputStream(new FileInputStream(infile));

int c;

while ((c=in.read())!=-1) {

out.write(c);

}

in.close();

out.close();

}

/* 正式提交*/

https://www.360docs.net/doc/32463868.html,mit();

} catch (Exception ex) {

/* 出错回滚*/

conn.rollback();

throw ex;

/* 恢复原提交状态*/

conn.setAutoCommit(defaultCommit);

}

3、替换BLOB对象(将原BLOB对象清除,换成一个全新的BLOB对象)

public static void blobReplace(String infile) throws Exception

{

/* 设定不自动提交*/

boolean defaultCommit = conn.getAutoCommit();

conn.setAutoCommit(false);

try {

/* 清空原BLOB对象*/

stmt.executeUpdate("UPDATE TEST_BLOB SET BLOBCOL=EMPTY_BLOB() WHERE ID=’222’");

/* 查询此BLOB对象并锁定*/

ResultSet rs = stmt.executeQuery("SELECT BLOBCOL FROM TEST_BLOB WHERE ID=’222’ FOR UPDATE");

while (rs.next()) {

/* 取出此BLOB对象*/

oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");

/* 向BLOB对象中写入数据*/

BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream()); BufferedInputStream in = new BufferedInputStream(new FileInputStream(infile));

int c;

while ((c=in.read())!=-1) {

out.write(c);

}

in.close();

out.close();

}

/* 正式提交*/

https://www.360docs.net/doc/32463868.html,mit();

} catch (Exception ex) {

/* 出错回滚*/

conn.rollback();

throw ex;

}

/* 恢复原提交状态*/

conn.setAutoCommit(defaultCommit);

}

4、BLOB对象读取

public static void blobRead(String outfile) throws Exception

{

/* 设定不自动提交*/

boolean defaultCommit = conn.getAutoCommit();

conn.setAutoCommit(false);

try {

/* 查询BLOB对象*/

ResultSet rs = stmt.executeQuery("SELE CT BLOBCOL FROM TEST_BLOB WHERE ID=’222’");

while (rs.next()) {

/* 取出此BLOB对象*/

oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");

/* 以二进制形式输出*/

BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outfile)); BufferedInputStream in = new BufferedInputStream(blob.getBinaryStream());

int c;

while ((c=in.read())!=-1) {

out.write(c);

}

in.close();

out.close();

}

/* 正式提交*/

https://www.360docs.net/doc/32463868.html,mit();

} catch (Exception ex) {

/* 出错回滚*/

conn.rollback();

throw ex;

}

/* 恢复原提交状态*/

conn.setAutoCommit(defaultCommit);

}

观察上述程序对LOB类型字段的存取,我们可以看出,较之其它类型字段,有下面几个显著不同的特点:

一是必须取消自动提交。

存取操作开始前,必须用setAutoCommit(false)取消自动提交。其它类型字段则无此非凡要求。这是因为存取LOB类型字段时,通常要进行多次操作可以完成。不这样的话,Oracle 将抛出“读取违反顺序”的错误。

二是插入方式不同。

LOB数据不能象其它类型数据一样直接插入(INSERT)。插入前必须先插入一个空的LOB对象,CLOB类型的空对象为EMPTY_CLOB(),BLOB类型的空对象为EMPTY_BLOB()。之后通过SELECT命令查询得到先前插入的记录并锁定,继而将空对象修改为所要插入的LOB对象。

三是修改方式不同。

其它类型的字段修改时,用UPDATE …SET…命令即可。而LOB类型字段,则只能用SELECT …FOR UPDATE命令将记录查询出来并锁定,然后才能修改。且修改也有两种改法:一是在原数据基础上的修改(即覆盖式修改),执行SELECT …FOR UPDATE后再改数据;二是替换(先将原数据清掉,再修改),先执行UPDATE命令将LOB字段之值设为空的LOB对象,然后进行第一种改法。建议使用替换的方法,以实现与其它字段UPDATE操作后一样的效果。

四是存取时应使用由数据库JDBC驱动程序提供的LOB操作类。

对于Oracle数据库,应使用oracle.sql.CLOB和oracle.sql.BLOB。不使用由数据库JDBC驱动程序提供的LOB类时,程序运行时易于出现“抽象方法调用”的错误,这是因为JDBC所定义的Java.sql.Clob与java.sql.Blob接口,其中的一些方法并未在数据库厂家提供的驱动程序中真正实现。

五是存取手段与文件操作相仿。

对于BLOB类型,应用InputStream/OutputStream类,此类不进行编码转换,逐个字节存取。oracle.sql.BLOB类相应提供了getBinaryStream()和getBinaryOutputStream()两个方法,前一个方法用于读取Oracle的BLOB字段,后一个方法用于将数据写入Oracle的BLOB字段。

对于CLOB类型,应用Reader/Writer类,此类进行编码转换。oracle.sql.CLOB类相应提供了getCharacterStream()和getCharacterOutputStream()两个方法,前一个方法用于读取Oracle的CLOB字段,后一个方法用于将数据写入Oracle的CLOB字段。

需要说明的是,为了大幅提高程序执行效率,对BLOB/CLOB字段的读写操作,应该使用缓冲操作类(带Buffered前缀),即:BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter。例程中全部使用了缓冲操作类。

小结:通过JDBC操纵Oracle数据库的LOB字段,不外乎插入、修改、替换、读取四种方式,把握起来并不难。在实际操作中要注重上面所说的几点,结合阅读例程源程序,用户会很快明白LOB类型字段的使用的,也必将领悟到这种类型字段的妙处!

weblogic设置代理转发功能注意事项

设置简单代理转发功能注意事项 --jump227(dev2dev ID)最近因为工作需要进行了一次代理配置和测试,现把一些注意事项总结一下。(俺水平有限,欢迎大家指正)这里的weblogic版本为weblogic8.1 sp1,并且没有配置ssl。 目的:设置WebLogic Server作为另一个WebLogic Server 或集群的代理,实现转发功能。准备:1、创建一个服务或集群。 集群配置参考:https://www.360docs.net/doc/32463868.html,/techdoc/2005110701.html 2、配置代理文件 实现集群分发:通过HttpClusterServlet实现,可以参考上述集群配置的文章介绍 的web.xml和weblogic.xml进行部署。也可以参考: https://www.360docs.net/doc/32463868.html,/wls/docs61/adminguide/http_proxy_cluster.html 实现单一服务转发:通过HttpProxyServlet实现,配置weblogic.xml(同上)和 web.xml可以参考: https://www.360docs.net/doc/32463868.html,/wls/docs81/plugins/http_proxy.html 参数参考:https://www.360docs.net/doc/32463868.html,/wls/docs81/plugins/plugin_params.html#1143049 注意事项: 1、在不同机器上创建集群,对于与管理服务器不同机器的托管服务器配置中填写所属管理 服务器时,一定要填另一台机器上的管理服务器名字和ip地址。 2、各机器系统最好相同,环境配置一致,否则通过转发有可能出现显示不正常问题。(我 测试时,在程序相同的情况下通过windows转发访问hp-unix出现汉字乱码问题,而在hp-unix之间没有出现此问题。) 3、DebugConfigInfo参数(ON/OFF):可以查询参数配置信息,输入下列地址即可: http://proxy_host:port/path/xyz.jsp?__WebLogicBridgeConfig,其中proxy_host:port为代理地址和端口。在生产环境考虑安全建议关掉此参数。 4、通过查询配置信息可以看到WLLogFile: c:/temp/wlproxy.log(windows下)或者 WLLogFile:/tmp/wlproxy.log(unix下)。WLLogFile参数控制日志文件名称和地址,设置此参数前必须创建相应目录,并且Debug参数设置为ON。如果Debug参数设置为OFF将不记录调试信息。(我在配置时关掉了此功能,因为如果开启此功能一天的日志文件就占用大量的空间,太大了!) 5、经过测试HttpClusterServlet也可以实现单一服务代理转发功能(在WebLogicCluster设 置中写一个需要代理的服务器地址即可)。 6、在单一服务代理转发中,代理weblogic和被代理weblogic可以不在同一个域内(经过比 较严格的测试)。在集群分发中经过简单的测试代理weblogic也可以不在同一域内,是否存在别的问题有待考证。 7、单一服务代理转发设置中也可以用参数WebLogicHost和WebLogicPort来设置地址。 附: 1、web.xml示例(HttpClusterServlet单一服务转发,已经关掉调试信息及调试日志)

单点登录部署-weblogic

统一身份认证平台部署指南 1.生成证书 /opt/bea/jrockit_160_05/bin/keytool -genkey -v -alias casserver -validity 3600 -keypass changeit -keystore /var/heer/casserver.jks -storepass changeit -storetype jks -dname "cn=https://www.360docs.net/doc/32463868.html,,c=cn" -keyalg "RSA" 其中https://www.360docs.net/doc/32463868.html, 为统一身份认证中心服务器的IP /var/heer/casserver.jks 为生成的证书库 2.从jks证书库导出客户端使用的cer证书 /opt/bea/jrockit_160_05/bin/keytool -export -v -alias casserver -file /var/heer/casserver.cer -rfc -keystore /var/heer/casserver.jks -storepass changeit -storetype jks 3.将cer证书导入本地java证书库 /opt/bea/jrockit_160_05/bin/keytool -import -v -alias casserver -file /var/heer/casserver.cer -keypass changeit -keystore /opt/bea/jrockit_160_05/jre/lib/security/cacerts 4.进入weblogic控制台

weblogic故障诊断与日常维护总结

中间件故障诊断总结 一、步骤: 1、准确描述现象:客户说的和自己查看到的:平台、版本、操作、信息等。特别是,故障前是否有做过什么操作:网络调整、设备调整、主机参数调整、配置文件修改……反正将这一切都列入排查的对象。 2、使用工具收集数据,收集配置文件、日志、dump文件等等。 3、使用分析数据,根据问题或收集的数据,使用适当的工具分析数据,当然包括了在网上和在官方支持站点搜索类似的问题的解决办法。 4、尝试解决问题,根据找到的问题点,尝试解决。如修改错的,复原正确的;运行有问题的,适当调整运行的环境和运行的参数等等。 5、给出最佳解决方案,一般就是继续观察了。 6、总结经验并加以重用,知识积累。 二、通过前台收集基本的信息: 1、重点是故障前做过的操作 2、比对运行平台是否在官方的兼容性列表中,一般就是关注各个版本,特别是一些比较怪异的问题 3、检查环境和参数,如能打开控制台,就在控制台中初步观察,一般进入控制台的格式是http://ip地址:端口/console如:http://192.168.0.89:7001/console/。常用的留意点如下: A、域运行状态(域-监视-健康状况);一般为running状态,如果不是 running,那这些界面就没有了。 B、服务器运行状态(域-环境-服务器),正常的为running。

进入,监视-健康状况);留意JVM 堆中当前可用的内存量。 不同的JVM,所显示的内容可能不一样,以下为sun的:

D、各个server线程状态(域-环境-服务器,点击具体的serve后进入,监 视-线程);一般来说,空闲线程要多;健康状况为ok 如下图health状态为:Warning,这个是有线程阻塞的。

WebLogic部署(图解)

WebLogic部署(图解) WebLogic Server提供了三种方法来用于部署J2EE程序: ☆自动部署:WebLogic Server将定期扫描/applications目录,以获取新的和更新的应用程序。 ☆使用WebLogic.Deployer、WLShell和Ant wldeploy任务用于需要手动地重新部署的应用程序。 ☆WebLogic Server管理控制台用于手动地重新部署应用程序。 下面主要介绍第三种方式,采用WebLogic Server管理控制台进行手动地重新部署应用程序。 一.打开WebLogic Server: WebLogic部署要用到WebLogic Server控制台,在打开控制台前,要先启动WebLogic Server:1.启动WebLogic Server: 打开Tools→WebLogic Server→Start WebLogic Server,如下图: 当看到下面几句话时,表示WebLogic Server已经启动:

2.打开WebLogic Server控制台: Tools→WebLogic Server→WebLogic Console,如下图: 进入到控制台登陆页面,然后登陆:(账号和密码都为weblogic) 点击“Sign In”按钮,进入到:

二.WebLogic归档文件的部署: 1.Weblogic自动部署 例如:在Weblogic中创建名称为Deploy_Test的应用程序,执行后,则在控制台中的应用程序部署中可以看到创建的应用程序已经部署,这是本地自动部署,WebLogic Server将定期扫描/applications目录,自动部署里面的应用程序。 2.本地部署 在控制台页面中,进Domain Configurations下的Your Deployed Resources的Applications:

Weblogic 11g 部署web应用程序详细图解

Weblogic 11g 部署web应用程序详细图解 ----浪花滚滚 1. 手动部署 A.创建web工程。 B.将web工程导出war格式。 导出的包: C.启动weblogic服务。 服务启动成功: D.打开服务配置页面并登陆。

E.登陆成功后,点击左侧菜单栏的部署 F.点右边的安装按钮 G.点上传文件 F.选择刚才导出的war包,将其上传,下一步。 G.选择上传好的文件,下一步。

H.选择“讲次部署安装为应用程序”,下一步。 I.可以在这里为工程取个别名,也可以用默认。其他都选择默认,下一步。 J.完成。 H.再点左侧菜单栏的部署,显示部署的应用程序的状态。 J.地址栏输入工程的地址:http://localhost:7001/工程文件名(或者刚才改过的别名),发现网页正常运行,部署成功!

2. weblogic和myeclips集成的配置部署 A.点击myeclips工具栏的按钮的黑色小三角,在弹出窗口的左侧选择Configure Server →Servers→WebLogic→Weblogic 10.x B.选择Enable

C.配置WebLogic的路径及其登录用户名和密码 D.左侧点击JDK 右边点ADD按钮 点Directory… 选择weblogic安装目录下的JDK包。 注意:weblogic的版本和JDK的版本是严格匹配的,一定要选择正确的版本号。 并且需要使用跟安装weblogic时选择的同一个JDK。 E.点左侧的Launch,右边选择Run mode

F. 配置完成! G.部署工程 点myeclips上方工具栏的按钮, 选择要部署的工程 点ADD后Server选择WebLogic10.x 点finashi,ok后,部署完成。 H.点的黑色小箭头后选择WebLogic 10.x→Start启动服务。 I.服务启动成功。 J.当工程有重名时,会发生冲突,部署失败。

详细设置weblogic Cluster

详细设置 WebLogic Cluster 下列部分包含了配置 WebLogic Server 群集的准则和说明: ?开始之前 ?群集实现过程 开始之前 本部分简要讲述了设置 WebLogic Server 群集的前提任务和信息。 获取群集许可 群集的 WebLogic Server 实例的安装必须具有有效的群集许可。如果您没有群集许可,则请与 BEA 销售代表联系。 了解配置过程 如果您大致了解群集配置过程以及如何完成配置任务,则本部分中的信息对您最有帮助。 有关 WebLogic Server 中的可用配置工具以及它们所支持任务的信息,请参阅了解群集配置。 确定群集架构 确定什么样的群集架构最能满足您的需求。主要的架构决策包括: ?应该将所有应用程序层组合在一个群集内,还是应该将应用程序层分隔在不同的群集内? ?如何在群集中的服务器实例之间平衡负载?您将: o使用基本WebLogic Server 负载平衡, o实现第三方负载平衡器,还是 o将应用程序的Web 层部署在一个或多个次级HTTP 服务器上并向其代理请求? ?是否应该定义带有一个或多个防火墙的Web 应用程序非军事化区(De-Militarized Zone,简称DMZ)? 要获得这些决策的指导,请参阅群集体系结构和群集中的负载平衡。

您所选择的架构将对群集的设置方式产生影响。群集架构可能还需要您安装或配置其他资源,如负载平衡器、HTTP 服务器和代理插件。 考虑网络和安全拓扑结构 安全要求构成了设计合适的安全拓扑结构的基础。有关提供各种应用程序安全级别的几种其他架构的讨论,请参阅群集体系结构的安全选项。 注意:某些网络拓扑结构可能会干扰多播通信。如果您要在W AN 中部署群集,请参阅如果群集跨越W AN 中的多个子网。 注意:请尽量不要跨越防火墙在群集中部署服务器实例。有关穿越防火墙建立多播流量隧道的结果的讨论,请参阅防火墙可能会中断多播通信。 为群集安装选择计算机 确定计划在其中安装 WebLogic Server 的一个或多个计算机(在本部分中通篇称这样的计算机为“主机”)并确保它们具有所需的资源。WebLogic Server 允许您在单独的、非多宿主计算机上设置群集。这种新功能对于演示环境或开发环境非常有用。 注意:不要在具有动态分配的IP 地址的计算机上安装WebLogic Server。 多CPU 计算机上的WebLogic Server 实例 BEA WebLogic Server 对于可驻留于群集中的服务器实例数没有内置的限制。一些大型的多处理器服务器(如 Sun Microsystems, Inc. Sun Enterprise 10000)可以承载非常大的群集或者多个群集。 大多数情况下,按照每两个 CPU 一个 WebLogic Server 实例的方式进行部署,WebLogic Server 群集的可伸缩性最好。但是,您应该使用计划的所有容量对带有目标 Web 应用程序的真正部署进行测试,以确定服务器实例的最佳数量和分布。有关详细信息,请参阅“WebLogic Server 性能及调整”中的“在多 CPU 计算机上运行多个服务器实例时要注意的性能事项”。 检查主机计算机的套接口读取器实现 为了获得最佳的套接口性能,请对 WebLogic Server 主机计算机进行配置,使其使用面向您的操作系统的本地套接口读取器,而不要使用纯 Java 实现。要了解原因,以及有关配置本地套接口的说明或优化纯 Java 套接口通信的说明,请参阅使用 IP 套接口的端到端通信。

Weblogic项目部署及相关问题解决

Weblogic项目部署 1、使用weblogic部署项目时,首先要启动一下开始菜单中weblogic目录下的QuickStart添加一个项目名称。 2、创建完项目之后,在weblogic安装目录\Middleware\user_projects\domains下面就可以看到自己刚刚创建的项目了。随后启动目录下面的startWebLogic.cmd,启动完成后,启动ie 浏览器在地址栏输入http://localhost:7001/console,然后会出现一个登陆窗口,用户名为创建项目最后输入的名称,默认是weblogic,密码即为自己输入的密码. 3、登陆进去之后我们就可以对我们所创建的项目进行配置了: 配置服务项中的数据源:名称和JNDI名称我们都要使用项目中app-config-context.xml 配置文件项目中的JNDI名称。这里使用的是sinosoftDataSource。数据源配置完成后的参数: url:jdbc:oracle:thin:@10.32.14.73:1521:personal 驱动程序类名称:oracle.jdbc.xa.client.OracleXADataSource 由于在倒数第二步测试连接成功之后我就直接点击完成,导致最后一步没有完成,最后在部署项目完成之后项目报错找不到数据源,Unable to resolve 'sinosoftDataSource'. Resolved ''; remaining name 'sinosoftDataSource' 之后就是在weblogic中部署需要部署的项目,也就是将项目中的webapps目录加载到weblogic中,一切完成之后就可以在浏览器中输入访问路径访问这个项目了。 weblogic部署中遇到的问题: 1、内存溢出:修改项目路径\bin\目录下的setDomainEnv.cmd文件, 将其中的内容: set MEM_PERM_SIZE_64BIT=-XX:PermSize=128m set MEM_PERM_SIZE_32BIT=-XX:PermSize=48m 修改为: set MEM_PERM_SIZE_64BIT=-XX:PermSize=512m set MEM_PERM_SIZE_32BIT=-XX:PermSize=512m Myeclipse中的内存溢出修改: -Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=128m -XX:MaxPermSize=512m -Xverify:none -da Paths中添加一个名称为antlr-2.7.6rc1.jar。

weblogic在windows下安装及部署项目教程

Weblogic在windows下安装及部署项目教程 1.Weblogic10.3.6版本下载地址: https://www.360docs.net/doc/32463868.html,/technetwork/cn/middleware/ias/downloads/wls-main-091116-zhs.html 或在\\192.168.60.244\Tool\测试环境工具上取 2.安装 1)安装目录:D:\Oracle\Middleware 2)选择安装类型为自定义,选择自己需要安装的组件,其他都是默认直接下一步,直 到安装完成。 3.创建域 1)创建新的weblogic域 2)其他默认,点“下一步”,到下图这个界面设置用户名和密码。例如:用户名:weblogic 密码:weblogic1

3)选择服务器启动模式和JDK 4)选择可选配置

5)配置管理服务器 6)后面步骤直接“下一步”,知道创建完成。创建完成,运行 D:\oracle\Middleware\user_projects\domains\easyStore_domain\bin\startWeblogic.c md,用浏览器打开http://192.168.60.244:7001/console可直接登录管理服务器。 4.配置受管服务器 1)登录界面,使用自己设置的用户名密码登录

2)新建受管服务器 3)设置服务器名称、服务器监听地址、服务器端口,名称和端口均不与其他服务器重 复。然后点击“下一步”,完成。

5.配置数据源 1)点击“新建”,选择“一般数据源” 2)设置JDBC数据源名称,以及数据库类型,点击“下一步” 3)设置数据库驱动程序,选择如下图所示 4)设置JDBC数据源详细信息,实际的数据库名称、数据库用户名、主机地址等。

weblogic中间件常见问题

1Weblogic9.2 在linux下启动很慢 打开setDomainEnv.sh 增加-Djava.security.egd=file:/dev/zero 修改参数为 JAVA_OPTIONS="${JAVA_OPTIONS} -Djava.security.egd=file:/dev/zero" 2Windows x64 jrockit 启动3000M 报OutOfMemory https://www.360docs.net/doc/32463868.html,ng.OutOfMemoryError: class allocation, 153359080 loaded, 154140672 footprint JVM@check_alloc (src/jvm/model/classload/classalloc.c:118). 19416 bytes 通过修改启动内存,设置4G以上 3后台日志出现以下报错 User does not have permission on weblogic.management.home to perform lookup operation 1、网上找到的解决方案是: 打开weblogic控制台,点击你部署工程的那个domain,在右边主页的下面有一个“View Domain-wide Security Settings”连接,点开它,看看复选框“Anonymous Admin Lookup Enabled”前面是没选的,把它勾上。 2、使用了1中的解决方案还是报这个错误,经过高手提醒后发现原因: 如果一个weblogic.xml中包含以下的内容: true 这个配置的意思是使weblogic优先加载应用WEB-INF/lib下面的jar包。如果你在部署一个应用的时候,应用中weblogic.xml中已经包含这句,则 很有可能weblogic报异常,因为weblogic启动时已经加载了默认的jar,当扫描到这个weblogic.xml的时候,又被告知要先加载WEB-INF/lib下面的jar包。 这个时候weblogic就不知道怎么办了。遇到这样的问题,我们可以先将weblogic.xml中的这段配置剪切出来部署,当部署成功后,关闭weblogic服务器, 再将这段话粘贴回weblogic.xml就可以了,也就是说,应用至少要先部署成功才可以。 3、局出现在的报错为,恢复域到新的环境后,新环境里只有一个weblogic用户,而IIOP使用了其它用户,但 用户不存在当前域里,所以报错 4开启管理端口https 9002后,管理服务器重启无法启动 <2014-8-6 下午03时14分21秒CST> <2014-8-6 下午03时14分21秒CST> <2014-8-6 下午03时14分21秒CST>

weblogic部署流程

Weblogic部署大概流程 1.将war放到服务器,unzip name.war –d name,将war解压到名为name的文件夹下 2.确认WEB-INF下有weblogic.xml 文件该文件用于告诉weblogic使用当前项目的jar 启动项目,不适用wenlogic自带jar包启动。 3.确认web.xml中servlet-mapping 的servlet-name 是weblogic模式 4.确认calsses下database.properties 为weblogic格式(不带java:comp/env/) 5.到domain的bin下面执行nohup ./startWebLogic.sh & 启动weblogic 6.登录ip:7001/console 进入控制台 7.在服务其中选择新建填写名称和端口名称随意端口不能和其他的冲突选择完成 8.随意启动一次startManagedWebLogic.sh 成不成功无所谓主要为在domianHOME /servers 下生成managedservice 名称的文件,在这个文件下创建security目录下面建立boot.properties文件写入 username=xxxxx password=xxxxxxxx (写入的是明文启动一次后自动加密) 9.再次返回bin目录下启动服务nohup ./ startManagedWebLogic.sh ${manageserviceName} ip:7001 $ 10.返回控制台,查看manageService服务是否启动,服务选项卡中创建数据源目标 选择manageService

bi工具FineBI部署weblogic的常见问题及解决

bi工具FineBI部署weblogic的常见问题及解决 1. weblogic1 2.1.1部署问题 按照weblogic服务器部署的步骤对weblogic12.1.1进行部署,会出现部署不成功的现象。 1.1 解决方案 更改或删除%WebReport%/WEB-INF/lib目录下的db2jcc.jar文件即可部署成功。 2. weblogic部署类冲突 部署好weblogic之后,启动项目,报错如下: 1.Root cause of ServletException. 2.java.util.ServiceConfigurationError: javax.xml.ws.spi.Provider: Pro vider weblogi 3. c.wsee.jaxws.spi.WLSProvider could not be instantiated: https://www.360docs.net/doc/32463868.html,ng.C lassCastExcep 4.tion 5. at java.util.ServiceLoader.fail(ServiceLoader.java:207) 6. at java.util.ServiceLoader.access$100(ServiceLoader.java:16 4) 7. at java.util.ServiceLoader$LazyIterator.next(ServiceLoader. java:353) 8. at java.util.ServiceLoader$1.next(ServiceLoader.java:421) 9. at javax.xml.ws.spi.Provider.getProviderUsingServiceLoader( Provider.java 10.:146) 11. Truncated. see log file for complete stacktrace 12.Caused By: https://www.360docs.net/doc/32463868.html,ng.ClassCastException 13. at https://www.360docs.net/doc/32463868.html,ng.Class.cast(Class.java:2990) 14. at java.util.ServiceLoader$LazyIterator.next(ServiceLoader. java:345) 15. at java.util.ServiceLoader$1.next(ServiceLoader.java:421) 16. at javax.xml.ws.spi.Provider.getProviderUsingServiceLoader( Provider.java 17.:146) 18. at javax.xml.ws.spi.Provider.provider(Provider.java:106) 19. Truncated. see log file for complete stacktrace

Weblogic集群多播配置故障排除

Weblogic集群多播配置故障排除 使用IP 多播时,群集中的WebLogic Server 实例可以共享一个IP 地址和端口号。 此功能使得群集的所有成员可被视为一个实体,并且使得群集成员能够互相通信。 下列部分提供了对IP 多播配置问题进行故障排除的建议: 验证多播地址和端口配置 识别网络配置问题 使用MulticastTest 实用工具 调整多播功能 调试多播 杂项问题 多播配置故障排除的其他资源 有关在群集中使用和配置多播的常规信息,请参阅群集配置和config.xml。 有关在控制台中配置多播地址的信息,请参阅“管理控制台联机帮助”中的多播。 验证多播地址和端口配置 多播问题故障排除过程的第一步是验证您是否正确配置了多播地址和端口。必须为每个群 集正确配置多播地址。 多播地址和端口配置问题属于群集无法启动或者服务器无法加入群集的最常见原因。对于 多播地址要注意下列事项: 多播地址必须是介于224.0.0.0 和239.255.255.255 之间的IP 地址,或者具有此范围IP 地址的主机名。 WebLogic Server 使用的默认多播地址是239.192.0.0。 不要使用任何x.0.0.1 多播地址,其中x介于0 和9 之间(包括0 和9)。 可能的错误 由于多播配置问题经常会出现下列类型的错误: 无法为群集创建多播套接口

多播套接口发送错误 多播套接口接收错误 检查多播地址和端口 要检查多播地址和端口,请执行下列操作: 通过WebLogic Server 管理控制台检查群集多播地址和端口,或 检查config.xml 中元素的多播信息。 识别网络配置问题 验证了多播地址和端口配置正确之后,请确定网络问题是否正在干扰多播通信。 物理连接 确保网络中不存在物理问题。 验证群集中每个承载服务器的计算机的网络连接。 验证网络的所有组件是否正确连接并且运行正常,其中包括路由器和DNS 服务器。 地址冲突 网络中的地址冲突可能会对多播通信造成干扰。 使用netstat实用工具验证没有其他网络资源正在使用群集多播地址。 验证每个计算机都具有一个唯一的IP 地址。 UNIX 系统上的nsswitch.conf 设置 在UNIX 系统上,您可能会遇到UnkownHostExceptions错误。此错误可能会在任何时间发生,甚至当服务器的负载不是很重的情况下也会发生。检 查/etc/nsswitch.conf 并将顺序更改为`files,DNS,NIS'可避免此错误。 有关详细信息,请参阅系统的nsswitch.conf联机手册页。

64位weblogic windos安装部署以及常见问题解决

64位weblogic11g安装部署以及常见问题解决方案 目录 (一) 安装 (1) 在Windows 64位操作系统安装Weblogic的注意事项 (3) (二) 部署运行 (3) 1. 包引入错误 (3) 2.乱码现象 (3) 3.mime-typeType配置问题 (4) 4.应用不存在 (4) 5.ClassNotFoundException: org.hibernate.hql.ast.HqlToken (4) 6.weblogic部署war包action不能访问问题解决方法[There is no Action mapped for namespace / and action name] (5) https://www.360docs.net/doc/32463868.html,ng.StackOverflowError (5) (一)安装 我们在64位的服务器上为提高性能要安装64位的weblogic。经常在网上看到有人问,weblogic有64位的么?weblogic需要破解么? weblogic有专门的64位版本,这里安装的是weblogic11g,也就是10.3.6版本,12c的版本安装应该类似。weblogic从bea被oracle收购后,不需要破解,就只有授权。什么意思呢?就是说从oracle官网上下载的weblogic就是全功能版本,不管是集群还是其他,功能没有任何限制。但是如果要用于商业环境,必须要向oracle 买license,当然可以偷偷的用,那就是盗版,侵权,有一天oracle可以告的破产……。 1、下载64位weblogic,打下这个地址: https://www.360docs.net/doc/32463868.html,/technetwork/middleware/ias/downloads/wls-main-097127.html,在这里可以看到除了mac os X操作系统外,其他系统的64位都是同一个版本,wls1036_generic.jar。如下图,weblogic的下载需要注册一个oracle官网的帐号。

weblogic中间件通用应急处置预案

Weblogic中间件(含业务应用)通用应急预案 一、应急处置原则与工作流程 国网信息系统中间件主要采用weblogic集群方式部署,通过中间件控制台对各应用节点进行统一管理和监控,本次中间 件应急预案以“先抢通、后抢修”为处理原则,首先恢复业务 应用,保存相关日志,后期再根据日志进行详细分析和故障定 位。 weblogic中间件是应用程序的发布平台,相对比较稳定。 业务应用均通过weblogic中间件进行发布,通过weblogic中间 件的JDBC等配置,实现前端应用和后台数据库之间的交互。因 此不管是程序代码问题、硬件问题、数据库问题均有可能体现 在weblogic中间件节点异常;并且由于程序代码效率低下、参 数配置不当,也会导致weblogic中间件节点异常。这种情况下,重启异常weblogic节点,释放资源,是最快的恢复业务的应急 手段。具体原因可以通过备份日志,事后进行分析排查。 本应急预案中涉及到的程序包路径,均是根据信通公司weblogic中间件安装规中指定的路径。如果未按照规安装的中 间件,请咨询对应系统专责协助处理。 二、weblogic中间件故障应急场景 故障应急处理步骤6步: 1、使用IE浏览器访问节点应用确认节点可用性。 2、登陆weblogic控制台确认节点状态。

3、收集故障点日志,备份节点日志。 4、查看节点日志,根据报错信息确定故障原因。 5、根据故障原因,执行应急操作。 6、组织人员进行具体原因分析并整改。 三、故障场景 Weblogic中间件日志文件中常见错误如下:

ption: Unable to obtain lock on /home/weblogic/bea/user_projects/dom ains/bzcb_domain/servers/AdminServer/ tmp/AdminServer.lok. Server may already be running 16 13 因硬件或者系统故障,应用服务器全部无 法启动 四、应急处理步骤 1.使用IE登陆访问对应故障节点应用地址,验证故障现象,防止误 告警出现。 2.登录weblogic控制台,确认故障节点名称。 使用IE浏览器,访问weblogic控制台IP:端口,根据异常端口号确认异常节点名称,如下图。 3.使用weblogic用户登陆操作系统。 4.备份对应节点日志。 $ cd /app/logs/hqgl/server1.log ---进入对应日志目录 $ cp –r server1.log 20140808server1.log -----按照日期备份节点日志5.查看节点进程状态。 $ ps –ef|grep server1 (server1为节点名称) 如果返回值为空,如下,则执行步骤12: weblogic 59086 2803 0 22:12 pts/1 00:00:00 grep server1 如果返回值不为空,如下,则执行步骤11:

weblogic常见问题

weblogic9.2 + myeclipse 部署问题 weblogic9.2 + myeclipse 部署时要注意的几点文章分类:Java编程 1、JDK的选用 weblogic9.2版本所使用的jdk为jdk150_12,如果项目中使用jdk1.6的话,就只能访问到http://localhost:7001/console 而进入项目后会报Error 404或500错误,而项目本身在tomcat或其他应用服务器是没有问题的。 这时就需要将weblogic9.2所使用的jdk与IDE工具安装的jdk统一为1.5的,也可以使用weblogic自带的jdk。 注:确保所有的jar存在还有E:\bea9\weblogic92\server\lib\weblogic.jar存在否则主页可能报404错误 2、autodeploy 1) 要先启动服务,在部署项目,自动部署才会起效。 2) 自动部署的项目删除后,再重新部署部署不成功,报访问null错误,且在console中无法删除自动部署的文件 这时找到user_projects\domains\base_domain\config 目录,在这个目录下有个config.x ml 文件,在文件中找到自动部署的项目 如下所示,将其删掉,同时将user_projects\domains\base_domain\config\deployments 目录下自动部署的那个文件夹删除即可。 _appsdir_TEST_dir AdminServer war autodeploy\TEST DDOnly nostage 3)自动部署时,weblogic不识别应用程序,报如下错误 DeploymentException:[J2EE:160177]The application at "C:\bea\user_projects\domains\ registry\autodeploy\registry" was not recognized as a valid application type. If this is an EAR file, please ensur e the META-INF/application.xml exists. EJB-JARs should have a META-INF/ejb-jar.xml or corresponding annotations exist. If this is an exploded WAR, the name of directory must be end with ".war". RARs require a META-INF/ra.xml. A JMS deployment should be an XML file whose name ends with "-jms.xml". A JDBC deployment should be an XML file w hose name ends with "-jdbc.xml". For other application types, please consult the WebLogic Server documentation.'

oracle+weblogic安装与部署

公司由C/S转向B/S,所以有了此文。 oracle+weblogic的安装与部署。 一般的软件安装配置都比较的简单,而这些相对复杂点,所以在此配图详解,下面开始正文: 1.下载oracle 10g,PL/SQL和Weblogic8.1.4 2.安装oracle 10g 前期准备首先检查机器上是否安装了其他版本的oracle,如果有请按以下步骤卸载。 a,首先使用oracle自带的卸载功能卸载程序 b,删除机器上oracle目录 c,打开注册表开始—运行—regedit,找到HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,全部删除。 找到HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOr der\Start Menu2\Programs\Oracle - OraDb10g_home1全部删除。 开始安装 a,首先解压oracle 10g b,点击解压后的setup.exe进行安装,如图1:

选择基本安装,根据自己的盘符大小情况选择安装目录路径,安装类型根据个人实际应用进行选择。 全局数据库名一般默认,口令自己设置 c,点击下一步,oracle会自行检测运行环境和安装目录等等,如图2:

d,经检测没有问题,点击下一步,出现如图3界面: 根据本身机器的硬件,安装时间不同,一般10到20分钟

如果安装过程中出现问题,会提示错误信息;否则就出现如下界面,图5: e,安装结束,图6:

3.安装PL/SQL PL/SQL的安装比较简单这里不做过去介绍。 登陆界面,图7: 4.安装Weblogic8.1.4 a,解压Weblogic8.1.4,点击platform814_zh_cn_win32.exe文件,如图8:

WebLogic问题排除概览

WebLogic问题排除概览 问题排除概览
孟和 技术咨询顾问 大中华区渠道及联盟部

以下内容旨在概述产品的总体发展方向。 此信息仅供参考,不可纳入任何合同。此 信息不承诺提供任何资料、代码或功能, 并且不应该作为制定购买决策的依据。此 处所述有关 Oracle 产品的任何特性或功能 的开发、发布以及相应的日程安排均由 Oracle 自行决定。

议程
? Guardian ? JVM层面的问题诊断 ? Java应用程序及服务器层面问题诊断

议程
? Guardian ? JVM层面的问题诊断 ? Java应用程序及服务器层面问题诊断

通过Guardian能做什么? 能做什么? 通过 能做什么
? Oracle Guardian:
? 就像是WLS的杀毒软件或者病毒扫描器 ? 检查域的常见配置问题和运行时问题,并针对性的提供建议的 解决方案 ? 包括图形化界面和命令行方式 ? 也可以监控运行于WLS之上的其他Oracle产品 ? 有Oracle支持账户的用户可以免费使用 ? 可以使售后服务Case自动创建

使用Guardian 使用
? 在如下的场景可以使用Guardian对域进行评估:
? ? ? ? ? ? 域创建并配置之后 作为开发环节之一,在部署到生产系统之前 在打过WLS补丁之后 在系统中引入或者对其它第三方软件进行升级后 生产系统可以进行周期性的评估 在压力测试中,对域进行评估

Weblogic配置及站点部署优化

Weblogic 配置与站点部署+优化 一,软件名称与版本: oepe-indigo-installer-12.1.1.0.1.0349-12.1.1-win32.exe 软件下载地址: /nt/middleware/11g/wls/1211/oepe-indigo-installer-12.1.1.0.1.0349-12.1.1-win32.exe 二,安装: 直接双击oepe-indigo-installer-12.1.1.0.1.0349-12.1.1-win32.exe 出现如下界面表示开始进入安装: 出现如下界面后点击下一步: 下图是选择安装路径默认路径为C:\Oracle\Middleware 我这将安装路径改为:D:\Oracle\Middleware 然后直接点下一步:

出现如下界面后直接点击一下步既可: 然后选择YES

选择完成后出现如下图我选择的典型安装然后直接下一步既可; 以下界面是安装目录然后点击下一步:

出现如下界面后接着选择下一步: 直接点击一下步: 下图界面表示进入最后安装阶段:

出现如下界面后表示安装完成: 启动WEBLOGIC后出现如下图界面 点击创建一个新域:

选择创建新的Weblogic域然后选择默认(如下图界面所示)直接点击下一步: 下图是域名称与域配置文件所在位置也可以自行更改路径我这里不做更改直接用默认的然后点击下一步; 下图界面是对域登陆用户名与密码的设置选项默认名为weblogic 我这里不做更改直接用这个用户名密码按自己的需求设置既可密码设置完成后直接点击下一步:

相关文档
最新文档