项目常见异常+基本解决方案

来源:互联网 发布:java复试主要干什么 编辑:程序博客网 时间:2024/05/20 06:52

1.

 

13:00:47,601ERROR [com.tgb.itoo.authority.cache.SerializeUtils] (Thread-119) Failed todeserialize:java.lang.Exception: Failed to deserialize

atcom.tgb.itoo.authority.cache.SerializeUtils.deserialize(SerializeUtils.java:42)[itoo-shiro-utils-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]

--shiro保存session,序列化反序列化时报错

解决办法:主要出在shiro,找权限解决即可

 

2.

14:25:34,960ERROR[org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/itoo-basic-place-web].[action]](http-/0.0.0.0:8080-4) JBWEB000236: Servlet.service() for servlet action threwexception: java.lang.NullPointerException

atcom.tgb.itoo.basic.eao.impl.RoomEaoImpl.queryPageEntityByRoom(RoomEaoImpl.java:72)[itoo-basic-place-core-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]

--变量赋值为空值,没有经过判断就直接使用;这里在调用queryPageEntityByRoom的方法的时候,某个变量产生了这样的情况

解决办法:加强对变量的null值和字符串为空的判断

3.

Caused by:java.lang.ClassNotFoundException:com.tgb.itoo.exam.entity.ExamineeArrangement from [Module"org.apache.shiro:main" from local module loader @ba4d54 (finder:local module finder @bc6874 (roots:/usr/local/jboss6.2/modules,/usr/local/jboss6.2/modules/system/layers/base))]

atorg.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:197)[jboss-modules.jar:1.3.0.Final-redhat-2]

atorg.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:443)[jboss-modules.jar:1.3.0.Final-redhat-2]

--依赖的某个类或者说某个jar包,在运行加载的时候没有通过程序加载上,导致该异常

解决办法:清理maven仓库,对maven仓库进行更新即可

 

4.

09:12:52,873WARN [org.jboss.ejb.client.remoting.ConfigBasedEJBClientContextSelector](ServerService Thread Pool -- 54) Could notregister a EJB receiver for connection to 192.168.24.115:4447:java.lang.RuntimeException: java.net.ConnectException: Connection refused: nofurther information

 

--通过给出地址查找所需服务的时候,无法连接到jboss服务

原因:1.ip地址错误;2.端口错误 3.jboss未启动

解决方案:排查以上三个原因

 

5.

09:05:34,750ERROR[org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/itoo-basic-place-web].[action]](http-/0.0.0.0:8080-5) JBWEB000236: Servlet.service() for servlet action threwexception: java.lang.IllegalStateException: EJBCLIENT000025: No EJB receiver available for handling[appName:itoo-log-ear, moduleName:itoo-log-core-0.0.1-SNAPSHOT, distinctName:]combination for invocation contextorg.jboss.ejb.client.EJBClientInvocationContext@14154a3

 

--找到jboss服务器后,在服务器部署的服务中无法找到目标服务;此时可能是:

1.服务所在ear部署失败;(如果所有代码无错误,而且jinkens构建还能成功,部署报错,此时应清理工作空间,按照顺序重新构建)

2.远程连接地址填写错误

 

解决方案

 

try … catch(打印到控制台,并向上抛出) … finally  +异常日志记录

 

需要考虑的问题:

我们的itoo项目,属于一个多层的j2ee项目,需要考录的问题有:

如何在一个多层的j2ee项目中定义相应的异常类?

在项目中的每一层如何进行异常处理?

异常何时被抛出?

异常何时被记录?

异常该怎么记录?

 

@Override

publicboolean deleteByIdsGeneric(String[] ids, String dataBaseName) {

booleanflag = false;

//获得当前操作的数据库名字

this.dataBaseName= dataBaseName;

//取得实体管理器

EntityManagerem = getEntityManager();

try {

// 验证数据的有效性

if (ids != null && ids.length> 0) {

for(String id : ids) {

//deleteEntityByIdGeneric(id,dataBaseName);

Stringhql = "update " + clazz.getSimpleName()

+" as o set o.isDelete = 1 where o.id =:id";

Queryquery = em.createQuery(hql);

//设置参数

query.setParameter("id",id);

//执行更新操作

query.executeUpdate();

flag= true;

}

 

if(logger.isDebugEnabled()) {

logger.debug("Eao执行逻辑删除成功!"+ getEntityManager().getClass().getName());

}

 

}

 

}catch (Exception e) {

flag= false;

System.out.print(e);

logger.error("Eao执行逻辑删除失败!",e);

}

returnflag;

}

 

0 0