常见问题解决办法及注意事项
序号 问题描述 解决办法 提供人
1 Weblogic 启动前设定用户和口令 修改mydomain文件夹中weblogic.cmd中set wls_user和set wls_pw两项
2 Struts1.1下生成的jsp页面中Taglib引用错误 修改project property,将required Liberary中的Struts全部删除,同时增加Struts1.1
3 浏览器端如果知道jsp页面的路径,可以直接输入路径访问页面,而避开登陆页面的检查 将除login和index之外的所有页面放在WEN-INF目录中,浏览器不能直接访问该目录下的页面,只能通过链接的方式进行访问
4 如何使用war文件 "1、tomcat:将.war文件放置到应用服务器的发布路径下即可以直接访问。
2、weblogic:将.war文件解压后放到user_project\mydomain\applications下即可"
5 在Struts中如何应用资源文件 设置Struts-config.xml中message resource,将指定的资源文件映射为一个key值,在页面中通过Struts Tag就可以访问该资源文件,访问方式如下<bean:message key="jl.checkman" bundle="jl"/>,其中key参数表示资源文件中的键值,bundle参数表示资源文件对应的key值。注意:设置资源文件时应去掉资源文件的后缀。
6 如何配置log4j "JB中配置:1、在config server 中修改weblogic的启动参数,增加下述语句-Denvironment.defaultroot=""D:\enviroment\defaultroot""
2、在config library中将jar文件加载入JB,然后设置project属性,将该library加载入project
3、修改log4j-config.properties,添加log4j.appender.R.File=D:/enviroment/defaultroot/WEB-INF/logs/environment
WebLogic中配置:1、修改startweblogic.cmd,设置启动参数,添加set JAVA_OPTIONS=-Denvironment.defaultroot=D:\environment\defaultroot
2、修改startWLS.cmd,修改classpath,在set classpath中加入log4j.jar文件的完整路径
3、修改server/lib/weblogic.policy,添加permission java.util.PropertyPermission ""org.modern.enviroment.default"",""read"";"
7 通过实体bean生成会话门面模式之后,实体bean无法删除问题 "首先在实体bean本地组件接口中增加ejbRemove函数,使其和实现类中空的ejbRemove函数对应起来。
然后修改会话门面的实现类,在其remove方法中调用实体bean组件接口的ejbRemove方法。"
8 Jbuilder和SQL Server2000建立JDBC连结后只能得到table而无法得到column "将$/05.HJ0319(环境信息管理系统)/2.Engineering Area/source_code/library/sql2000forjdbc中的msbase.jar,mssqlserver.jar,msutil.jar三个文件get到本机。
1、config liberary中将上述三个jar文件添加到user home中一个新建的liberary中,如sql
2、将sql添加到project的required liberary中
3、Tools-->Enterprise Setup-->Database Drivers-->Add,加入User Home/sql,然后重新启动JBuilder
4、数据库连结的配置如下:
driver:com.microsoft.jdbc.sqlserver.SQLServerDriver
url:jdbc:microsoft:sqlserver://exchange:1433;DatabaseName=mo_env
database name:microsoft:sqlserver://exchange:1433;DatabaseName=mo_env"
9 Session Bean引用local接口时,会出现remove不成功 问题主要是由于xxxHome.remove(xxx)引起的,解决办法是用xxx.remove代替,但是要判断xxx != null
10 EJB数据类型和数据库数据类型的匹配问题:decimal(x.x) 主要取决于数据的精度和范围,数据库整型使用相应整型,浮点数精度7位以内用float,15位以内用double
11 条件可空的EJBql写法例子 "where ( ?1 = -1 or ci.year =?1)
and (?2 = -1 or ci.month >= ?2)
and (?3 = -1 or ci.month <= ?3)
and (?4 = """" or ci.districtCode >= ?4)"
12 EJBql where子句的问题 等号需要用空格分开
13 生成session Bean的测试类后测试出现如下错误:java.lang.NoClassDefFoundError: org/apache/log4j/Logger 原因是在Weblogic中没有配置log4j的jar文件,具体配置方法参见第6行。
14 数据库中的自动增长列在cmp bean中无法保存 "1.首先根据数据库生成cmp bean,
2.在jbuilder左边的EJBdesigner中双击新建的cmp bean
3.在弹出的界面上选择[weblogic 7.x General]Tab页
4.修改[automatic key generation]部分的内容
5.保存,编译,重新部署EJB"
16 如何在多个ejb.jar中相互引用ejb? "1. 如果是引用local接口,则需要把相互引用的ejb所在的jar文件打包成一个ear文件,在wjb-jar.xml中的<ejb-link > 填写对应的JNDI 名称,同时在weblogic-ejb-jar.xml中的<ejb-local-reference-description>的<jndi-name>填写同样的JNDI 名称
2. 如果是引用remote接口,则不需要把相互引用的ejb所在的jar文件打包成一个ear文件。"
17 如何jbuilder工程中加入ejbdesinger? "1.拷贝xxx.ejbgrpx文件到工程目录.
2.用jbuilder打开工程文件.
3.右击工程,选择add files/packages/classes.
4.选择该工程文件"
18 如何在多个ejb.jar中相互引用ejb?补充 "1、修改ejb-jar.xml时只需修改实体bean的<ejb-local-ref><\ejb-local-ref>中的内容,其中<ejb-ref-name>指定需要引用的EJB的本地引用名字(a),和代码中的应保持一致,<local-home>指定需要引用的EJB的home接口,<local>指定需要引用的EJB的local接口,<ejb-link>指定需要引用的EJB的JNDI Name.
2、修改weblogic-ejb-jar.xml时修改实体bean的<reference-descriptor>,在<ejb-local-reference-description>中指定<ejb-ref-name>为需要引用的EJB的本地引用名字(步骤一中的a),指定<jndi-name>为需要应用的EJB的JNDI Name(和步骤一中的ejb-link值相同)"
19 ejbql中的in语句问题? "错误的使用:
?6 : kind = ""'0','1','2','3','4'""
where c.kind in ( ?6 )
不能带"",""
正确的使用:
?6:kind0
?7:kind1
?8:kind2
/9:kind3
?10:kind4
where ckind in (?6, ?7, ?8, ?9, ?10)
"
20 在运行时出现提示:“String index out of range: 64”或类似错误提示信息 "产生错误的原因:
在资源文件转换成unicode文件时,同一行出现换行所引起。例如:kf.xmgl.xmys.xmcykxx=\u9879\u76ee\u4ea7\u4e1a\u3001\u4ea7\u54c1\u7ed3\u6784\u53e
f\u884c\u6027
解决方法:
删除折行,比如上例中的代码恢复为kf.xmgl.xmys.xmcykxx=\u9879\u76ee\u4ea7\u4e1a\u3001\u4ea7\u54c1\u7ed3\u6784\u53ef\u884c\u6027"
运行时出现提示:“weblogic.ejb20.cache.CacheFullException” "产生错误原因:
weblogic中max-beans-in-cache 的默认值是1000,当使用cmp entity bean 检索数据库,数据库中符合条件的数据大于1000时就会出现该异常
解决办法:
修改weblogic-ejb-jar.xml中相应bean的<max-beans-in-cache> ,例子如下
<entity-descriptor>
<entity-cache>
<max-beans-in-cache>2000</max-beans-in-cache>
</entity-cache>
... ...
</entity-descriptor>
在weblogic的控制台修改方法如下:
1、选中已经部署好的相应的Entity Bean,然后编辑其部署描述选项
2、在相应entity descriptor中config a new entity cache,修改max beans in cache 的值
3、然后在EJB包的configuration中选择persist"
页面的输入域是readOnly的时候设置为true还是不可编辑状态 页面的输入域是readOnly的时候,如果要使这个输入域可以编辑,那么要把readOnly设置为true.注意readOnly的O要大写