<< Oracle高可用架构 | 首页 | 一些鲜为人知的编程事实 >>

Weblogic10.3部署问题的解决方法

今日,将我编写的S2SH DWR项目移植到weblogic11上,遇到一大堆的问题,但都被我一一解决。现将碰到的问题,汇总如下。

首先在oracle网站上下载weblogic11R1,然后安装上。注意,安装时带上eclipse插件。这个插件可以单独运行,是个集成了weblogic server配置的eclipse.运行eclipse,新建server 并配好。

建好Weblogic域后,就可以运行了,注意建域的时候,要选择开发模式。如果选择生产模式,在最后封装成自启动系统服务时,会失败。为了兼顾稳定,JDK可以选择生产模式的JDK。然后就可以用eclipse打包发布了。

1、首先碰到的是打包后不能运行的问题,解决方法如下,将打包后的文件解压,成为一个目录。然后以目录的形式在Admin Server Console中安装。就能解决这个问题。另外,如果发布后想以更改上下文根,可以在部署后,更改,如改为 / ,之后,会出现上下文 (未指定值),这样就是以网站根发布了。

2、字符集问题。在Jsp中pageEncoding选择GBK,但是content中的charset一定是utf-8。然后原有的工程的WEB-INF下建立weblogic.xml文件。文件头可以到安装目录的例子里去找。然后加上

<wls:charset-params>
        <wls:input-charset>
            <wls:resource-path>/*</wls:resource-path>
            <wls:java-charset-name>utf-8</wls:java-charset-name>
        </wls:input-charset>
    </wls:charset-params>

并且将web.xml中spring的转码设为GBK

<filter-name>encodingFilter</filter-name>
    <filter-class>
    org.springframework.web.filter.CharacterEncodingFilter
   </filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

如果这样,可能出现一些js文件失效的情况,可以将js文件用记事本打开,然后另存为utf-8编码,就能解决了。

3、加载HIbernate文件时,出现错误。HqlToken的错误。原因是antlr-2.7.6.jar与weblogic的自带的冲突引起的。解决办法在weblogic.xml里加入

<wls:container-descriptor>
        <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
    </wls:container-descriptor>

让weblogic优先使用工程自带的包,这个方法要加在字符集之前。

注意此处网上还有一种解决办法,即在用户自定义域环境变量里添加pre classpath.这种方法虽然以控制台启动不报错。但是制作成自启动系统服务后,仍然会出现Hibernate的错误。

4、系统集成了DWR,会在使用时报CSRF错误。需要在web.xml文件里关于dwr的配置修改为如下

<servlet> 
      <servlet-name>dwr-invoker</servlet-name> 
      <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> 
      <init-param> 
             <param-name>debug</param-name> 
             <param-value>true</param-value> 
      </init-param>
      <init-param>
             <param-name>crossDomainSessionSecurity</param-name>
             <param-value>false</param-value>
      </init-param>
      <init-param>
            <param-name>allowScriptTagRemoting</param-name>
            <param-value>true</param-value>
      </init-param>
</servlet>

变红的部分是新加上去的。这样就不会出现跨域访问安全的问题了。

5、在Tomcat下,引用另外一个jsp的时候正反斜杠是不区分的。但是到了weblogic下,会报文件找不到的情况。将 \ 改为 / 即可。

6、我单位上使用的是ISA2006,在ISA里要将以前的专门的发布网站协议去掉,然后自己新建一个普通的访问协议即可。否则会出现端口占用的情况。

7、最后是制作成自启动系统服务。在weblogic安装目录下,找到wlserver_10.3\server\bin下的installSvc.cmd文件。在"%WL_HOME%\server\bin\beasvc" -install -svcname:"beasvc %DOMAIN_NAME%_%SERVER_NAME%" -javahome:"%JAVA_HOME%" -execdir:"%USERDOMAIN_HOME%" -maxconnectretries:"%MAX_CONNECT_RETRIES%" -host:"%HOST%" -port:"%PORT%" -extrapath:"%EXTRAPATH%" -password:"%WLS_PW%" -cmdline:%CMDLINE%

之前加上

set PRODUCTION_MODE=true
set DOMAIN_NAME=base_domain
set SERVER_NAME=AdminServer
set USERDOMAIN_HOME=C:\Ora\user_projects\domains\base_domain
set WLS_PW=xxxxxx

在命令行执行后就可以了。

删除服务用uninstallSvc.cmd,在执行之前先设好

set DOMAIN_NAME=base_domain
set SERVER_NAME=AdminServer

以上就是我在移植时碰到的问题。如有其它问题,请大家一起探讨。

标签 : ,



发表评论 发送引用通报