创建新的Domain
选择“Create a new WebLogic configuration”,单击“Next”按钮
选择安装类型
选择安装“Basic WebLogic Server Domain”,单击“Next”按钮
选择定制安装
选择“Custom”安装,单击“Next”按钮
输入Administrator Server的信息
输入Administrator Server的名称,监听地址,监听端口,如果需要SSL支持的话可以在“SSL enabled”后面的复选取框上打勾,配置SSL监听端口,单击“Next”按钮
是否配置Server、Cluster、Machine信息
选择“Yes”,对Server、Cluster、Machine信息进行配置,,单击“Next”按钮
配置Managed Server信息
输入Managed Server的名称,监听地址,监听端口,如果需要SSL支持的话,可以在“SSL enabled”复选框上打勾,配置SSL监听端口。可以配置多个Managed Server。单击“Next”按钮
配置Cluster信息
输入Cluster的名称,Cluster的组播地址和端口,Cluster地址可输可不输。单击“Next”按钮
将Managed Server添加到Cluster中
选择左面列表中的Managed Server,将其添加到右面的列表中,单击“Next”按钮
配置Machine信息
在此不对Machine进行配置,单击“Next”按钮
是否配置JDBC信息
在此不对JDBC数据源和连接池进行配置,单击“Next”按钮
配置JMS信息
在此不对JMS进行配置,单击“Next”按钮
配置缺省系统管理员用户名和密码
输入系统管理员用户名和密码,还可以配置其它的系统管理用户,在此不做配置,单击“Next”按钮
配置Windows附加选项
可以选择是否创建开始菜单中的快捷方式,是否将该服务作为Windows系统服务,在这里我们全部选择“No”,单击“Next”按钮
配置服务的启动模式并选择Java SDK
选择“Development Mode”模式,并选择标准的Java SDK 1.4,在开发模式下会有比较丰富的调试信息,对我们很有帮助,单击“Next”按钮
配置信息确认以及选择安装路径
系统列出您的配置信息,并指定了缺省的安装路径(D:\bea\user_projects\domains\mydomain),在此我们将安装路径定位在D:\bea\user_projects\clusterdomain,单击“Create”按钮
系统创建Domain
系统根据配置信息,完成缺省的目录及文件的创建
启动WebLogic服务
Ø 启动Administrator Server
使用startWebLogic命令启动Administrator Server
Ø 启动Managed Server
使用startManagedWeblogic命令启动Managed Server,它的命令格式是:
startManagedWeblogic.cmd Managed Server的名称 Administrator Server地址
同理可以启动nodeB和nodeC,以及Proxy Server
通过HttpClusterServlet实现请求的自动分发处理
HttpClusterServlet通过一个WebLogic服务器代理对WebLogic集群中的其他服务器成员的HTTP请求, 同时HttpClusterServlet还为代理的HTTP请求提供负载平衡与容错处理。
实际上实现是很简单的,遵循下面几个步骤就可以轻松实现请求的自动分发功能:
Ø 创建一个代理Server(在此我们称这proxyServer)
Ø 生成配置文件web.xml
Ø 生成配置文件weblogic.xml
Ø 打包生成Web应用
Ø 在proxyServer上部署应用,并将该应用作为缺省的Web应用
创建代理Server
启动Administrator Server,然后进入Console控制台(http://10.16.92.33:7080/console/),在此我们将代理Server与Administrator Server置于同一台主机之上。
进入console控制台后,在“Server”结点上单击右键,在d出菜单上选择“Configure a New Server”,然后配置代理Server的相关信息。(在这里只要指定名称,监听地址,监听端口就可以了)
HttpClusterServlet 的部署,主要是Servlet的声明和映射,并设置初始化参数,可以创建一个Web App,然后直接在web.xml中添加或在管理控制台上设置HttpClusterServlet的部署信息。最后将它发布给用来做代理的 Server,并将这个Web App设置为这个Server的缺省WEB应用。
web.xml文件示例
weblogic.xml文件示例
打包WEB应用
可以使用jar命令将proxy应用打包成war文件,我们建一个临时目录temp,然后在其中建立如下目录结构:
使用如下的命令 *** 作,就可完成web应用的打包 *** 作:
JAR –参数 WEB应用名称要打包的目录
当然我们也可以直接部署该目录,而无需打包,这在项目的开发阶段是很有帮助的,便于修改。
部署proxy应用
启动Administrator Server,然后进入Console控制台(http://10.16.92.33:7080/console/),在此我们将代理Server与Administrator Server置于同一台主机之上。
进入console控制台后,在“Web Application Modules” 结点上单击右键,在d出菜单上选择“Deploy a new Web Application Module”,然后选择要部署的文件或目录,单击“Target Module”按钮,然后选择“proxyServer”,单击“Continue”按钮,到了下一步,单击“Deploy”按钮,完成部署工作。
部署完成后,查看WEB应用的状态是“FAILS”,造成这种情况的原因是“proxyServer”还没有启动,我们可以通过下面的命令启动“proxyServer”:
然后点击“ReDeploy”,重新部署应用,状态值将变为“Success”。
将WEB应用配置成缺省的WEB应用,weblogic8.1与weblogic6.1有很大的不同,8.1不再支持从console控制台完成配置的工作,而是在weblogic.xml中通过下面的结点,完成配置的工作。
<context-root>/ </context-root>
测试proxy应用
修改web.xml文件,加入下面的结点,然后重启服务。
<init-param>
<param-name>DebugConfigInfo</param-name>
<param-value>ON</param-value>
</init-param>
打开浏览器,访问下面的地址,会得到下图所示的结果,这就说明你的配置是成功的。
http://myserver:port/placeholder.jsp? __WebLogicBridgeConfig
myserver为服务地址(在这里是10.16.92.7)
port为proxy服务的端口(在这里是8080)
placeholder.jsp(这是一个不存在的JSP文件,您也可以随意指定文件名)
__WebLogicBridgeConfig(这个可千万不能写错呦!)
测试集群的分发功能
编写测试WEB应用并部署
我们来编写一个简单的WEB应用,它会在控制台和浏览器上同时打印出“OK”字样,然后将这个WEB应用部署到集群中所有Managed Server上面。(代码见附件)
在这里我们将通过Apache中所带的ab包来进行并发访问的模拟测试,使用如下的命令就可以完成压力测试。
ab –n 100 –c 10 http://10.16.92.7:8080/index.jsp
ab是测试程序的名称
参数n代表请求的总数量
参数c代表并发的请求数
url为要测试压力的页面
注:使用这个命令时,一定要在系统路径中能够找到该程序,否则不能执行。
压力测试完成后,我们从Managed Server的控制台上可以看到,nodeA,nodeB,nodeC都打印出了“OK”字样,这说明,在并发请求的情况下,集群能够将请求进行分发,以达到负载平衡的目的。
测试应用的目录结构如下,部署与proxy应用的部署一样,要注意的是要将它部署在Managed Server上面。
同一网段内不同机器部署集群
在不同机器上部署集群与上面的 *** 作有一些不同,就是在部署“Managed Server”时,要注意的是,参见下面的图解。
在另外一台机器上配置“Managed Server”时,要指定“Admin Server”的名称,监听地址,监听端口。
另外要注意的是,“Managed Server”上的配置信息要与“Admin Server”中Cluster所指定的配置信息一致。
启动“Managed Server”的命令与上面的一样,如下所示:
集群配置中要注意的问题
Ø Admin Server只用于集群的管理,而不能参与集群事务。
Ø Web应用应该部署到集群上,文件的同步是由WebLogic来完成的。
在Eclipse中安装weblogic server tools插件,直接连接到weblogic server,发布、部署、调试都变得简单些。1 安装weblogic server tools
1、 打开Eclipse的安装新软件的页面,Help ->Install New Software。
2、 进入安装页面
3、 点击添加,在Name处输入oepe(可以随便填,只是标记下这个url是什么),Location处输入下载地址,点击OK。
4、 出现可供安装的选择界面,点开Tools下来菜单,选择Oracle Weblogic Server Tools,点击Next。
5、进入确认选择界面,点击Next。
6、协议页面,这一页是展示安装Weblogic Server Tools所需要遵守的协议,直接选择I accept the terms of the license agreements,点击Finish。
7、开始安装,等待安装结束后,会需要重新启动Eclipse,点击重启即可。
2 添加weblogic server 运行环境
1、打开Eclipse首选项,Window ->Preferences。
2、打开Server ->Runtime Environments,点击Add,添加新的服务器运行环境。
3、添加新的服务器运行环境
选择Weblogic下的Oracle Weblogic Server 12c(12.1.3),点击Next。
4、选择Weblogic Server的相关配置
选择Weblogic home,需要选择到Weblogic安装目录下的wlserver目录,Java home会自动添加,也可以手动选择,点击Finish。
3 添加weblogic server服务器
1、在Servers显示视图中,右键,选择New ->Server
2、选择服务器
选择Weblogic下的Oracle Weblogic Server 12c(12.1.3),在Server runtime environment中选择刚才添加的运行环境,点击Next。
3、选择Domain directory,可以通过输入框后面的选择按钮选择,点击Finish。
4、完成
现在可以通过Eclipse连接Weblogic Server进行启动、部署、调试工作了了。
(一) 安装我们在64位的服务器上为提高性能要安装64位的weblogic。经常在网上看到有人问,weblogic有64位的么?weblogic需要破解么?
weblogic有专门的64位版本,这里安装的是weblogic11g,也就是10.3.6版本,12c的版本安装应该类似。 weblogic从bea被oracle收购后,不需要破解,就只有授权。什么意思呢?就是说从oracle官网上下载的weblogic就是全功能版本,不管是集群还是其他,功能没有任何限制。但是如果要用于商业环境,必须要向oracle买license,当然可以偷偷的用,那就是盗版,侵权,有一天oracle可以告的破产……。
1、下载64位weblogic,打下这个地址:
http://www.oracle.com/technetwork/middleware/ias/downloads/wls-main-097127.html,在这里可以看到除了mac os X *** 作系统外,其他系统的64位都是同一个版本,wls1036_generic.jar。如下图,weblogic的下载需要注册一个oracle官网的帐号。
2、下载64
位JDK,我们下载的文件wls1036_generic.jar文件里面不包括JDK,如有可能, 请尽量在Windows/Linux平台下使用JRockit虚拟机,下载地址:
http://www.oracle.com/technetwork/middleware/jrockit/downloads/index.html。通用的64位 Weblogic 安装程序本身并不绑定任何版本的64位 JVM, 因此请安装第二步下载到的Java安装程序.默认的安装路径(C:\Program Files)必须进行修改, 因为Weblogic和很多Java类库都不能很好的支持带有空格的目录名.请确保将JDK安装到不带任何空格的目录下(例如 C:\Java)
然后使用命令行安装,如果配置了环境变理直接使在控制台里面输入下面的命令即可。如果没有配置文件变量,在控制台使用cd进入到jdk的bin目录下面执行如下命令。
//界面安装,一般选择这个方法就可以
java -jar wls1034_generic.jar 即可启动安装过程, 默认启动的是图形界面的安装向导.
//控制台安装,这个方法一般用在linux等没有安装桌面环境的服务器上,命令行方式的安装命令用如下方式启动: java -jar wls1034_generic.jar -mode=console
//静默安装用如下方式启动:
java -jar wls1034_generic.jar -mode=console -silent_xml=/path_to_silent.xml
此处不应该存在\java\jdkXXX, 特别需要注意的是,jdk必须为64位,如果jdk安装目录有空格,则启动会报错,报错为:此处不应该存在\java\jdkXXX.解决办法为重装
JDK到一个没有空格的目录,或者把java目录拷贝到一个没有空格的目录,安装的时候选择该目录下的jdk即可。另外该版本的weblogic,我用的是jdk1.7
3.现在创建域并启动服务器, 或许会发现如下提示的错误信息:
<Error><Socket><BEA-000438><Unable to load performance pack. Using Java I/O instead. Please ensure
that wlntio.dll is in: ?C:\O
racle\fmwhome\wlserver_10.3\server\native\win\32C:\Oracle\fmwhome\wlserver_10.3
\server\binC:\WINDOWS\system32C:\WINDOWSC:\Oracle\fmwhome\wlserver_10.3\serve
r\native\win\32\C:\Oracle\fmwhome\wlserver_10.3\server\binC:\Program~\Java\jdk
1.6.0_24\jre\binC:\\Java\jdk1.6.0_24\bin?
解决方法
1) 进入如下目录: <<Weblogic_Home_Directory>>\wlserver_10.3\server\native\win\x64, 复制文件wlntio.dll 并将其粘贴到 C:\Java\bin 目录下 (假设JDK事先已安装至 C:\Java)
2)或者修改系统的PATH变量使其包含<<Weblogic_Home_Directory>>\wlserver_10.3\server\native\win\x64, 此为推荐做法
4. 启动服务器后, 问题应消失并可在Thread Dump中看到Muxer相关线程.
Linux/Unix下的解决方案:
需找到对应目录下的文件libmuxer.so或者libmuxer.sl, 将其加入系统的PATH或者LD_LIBRARY_PATH环境变量, 并确保WebLogic进程的所有者用户对其有读和执行的权限.
在Windows 64位 *** 作系统安装Weblogic的注意事项
weblogicwindowsdlldomainjdk64bit
1、首先必须先安装一个64位的JDK,用于Weblogic、ADF运行时环境以及Domain的安装,如果安装Weblogic、ADF运行时环境或者Domain安装时使用的是32位的JDK,将可能产生不可预期的问题,例如在将Weblogic安装为Windows服务时,WebLogic将启动不了。(没有日志,没有任何提示)。
2、Weblogic安装文件必须是通用的jar文件,不能是exe版本的。之所以用jar版本的weblogic安装,是为了确保在安装过程中在weblogci的native目录下生成64位的lib文件。
3、检查/wlserver_10.3/common/bin/commEnv.cmd中的环境变量"JAVA_USE_64BIT"是否为“true”,以及“WL_USE_X86DLL”、“WL_USE_IA64DLL” 和“WL_USE_AMD64DLL”的值。
(二) 部署运行
1. 包引入错误
? 问题现象:Console页面提示
或者后台有如下错误日志
经过分析,应该是\WEB-INF\lib下的jar包仅读取到根目录就结束了。而类似cache等文件夹下的jar没有读取。
? 解决方案:在setDomainEnv.sh文件中指定文件访问路径。
2. 乱码现象
? 问题现象:部署后无法正常启动。经查,是web-inf/config下的POOLconfig文件夹
以及文件都没有生成。
或者访问页面出现乱码。
? 解决办法:
用命令locale -a 查询系统支持的字符集
然后在startserver.sh里加命令:lang=查询到的中文字符集名
样例:export LANG="zh_CN.GBK"
3. mime-typeType配置问题
? 问题现象:错误日志VALIDATION PROBLEMS WERE FOUND problem:
cvc-datatype-valid.1.1: string value 'msiexec.exe' does not match pattern for mime-typeType in namespace
Windows和linux都有这个问题。
? 解决方案:
Web.xml中
<mime-mapping>
<extension>msi</extension>
<mime-type>msiexec.exe</mime-type>
</mime-mapping>
修改为
<mime-mapping>
<extension>msi</extension>
<mime-type>application/x-msi</mime-type>
</mime-mapping>
4. 应用不存在
? 问题现象:weblogic.management.DeploymentException: [Deployer:149266]Illegal
state for operation deploy: 'STATE_PREPARED'.
或者weblogic.management.ManagementException: [Deployer:149001]No application named 'tdapweb' exists for operation start
? 解决方案:在console页面左上角更新中心,点激活更新即可
5. ClassNotFoundException: org.hibernate.hql.ast.HqlToken
在做项目的时候,我用weblogic跑了一下自己的程序(开发一直在tomcat下),发现出现了这样的问题,
ClassNotFoundException: org.hibernate.hql.ast.HqlToken ,郁闷了半天,在tomcat下没有任何错误,为何到weblogic就有问题了呢?
在百度和google上搜了好久,换了n个关键词,才搜到原因如下:
原因:
Hibernate3.0 采用新的基于ANTLR的HQL/SQL查询翻译器,在Hibernate的配置文件中,hibernate.query.factory_class属性用来选择查询翻译器。
(1)选择Hibernate3.0的查询翻译器:
hibernate.query.factory_class= org.hibernate.hql.ast.ASTQueryTranslatorFactory
(2)选择Hibernate2.1的查询翻译器
hibernate.query.factory_class= org.hibernate.hql.classic.ClassicQueryTranslatorFactory
为了使用3.0的批量更新和删除功能,只能选择(1)否则不能解释批量更新的语句,当使用的时候出现了不支持条件输入中文的情况。
选择(2)可以支持输入中文,但没法解释批量更新语句了
在hibernate3中需要用到antlr,然而这个包在weblogic.jar中已经包含了
antrl类库,就会产生一些类加载的错误,
无法找到在war或者ear中的hibernate3.jar。
出现这个错误之后,antlr会调用System.exit(),这样weblogic就会中止服务。
原来是冲突了,解决方法也很简单,就是添加
<prop
key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory </prop>
6. weblogic部署war包action不能访问问题解决方法 [There is no Action mapped for
namespace / and action name]
java web项目如果使用注解方式开发,打成war包后部署到weblogic上后会出现 "There is no Action mapped for namespace / and action name" action未找到的问题,解决方法: 在struts.xml里新增以下两行配置: 中通配符的原因,把value=".*?/*.*jar(!/)?"改成value=".*?/_wl_cls_gen.*jar (!/)?"即可。
7. java.lang.StackOverflowError
参见http://wenku.uu456.com/view/c42e7a5bbe23482fb4da4cf2.html weblogic优化配置
8. 包冲突
包冲突可以在WEB-INF下新建weblogic.xml文件,指定优先采用项目中指定的jar包,方式如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN"
"http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd"><weblogic-web-app>
<!-- 为web.xml所定义角色赋值,如果是或者之前的版本,
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)