e.printStackTrace()。
java.lang.ArrayIndexOutOfBoundsException: 6
key1=hello key2=iteye.com
key1=hello key2=iteye.com
package com.iteye.redhacker.jersey.dao;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
import org.springframework.stereotype.Component;
import com.iteye.redhacker.jersey.exception.DaoException;
import com.iteye.redhacker.jersey.exception.ExceptionCode;
@Component
public class TestDao {
public String sayHello() {
ClassLoader classLoader = TestDao.class.getClassLoader();
String iniFile = "com/iteye/redhacker/jersey/dao/test.properties";
URL url = classLoader.getResource(iniFile);
InputStream is;
try {
is = url.openStream();
} catch (IOException e) {
throw new DaoException(e, ExceptionCode.READ_FILE_FAILED);
}
Properties proper = null;
try {
if (proper == null) {
proper = new Properties();
}
proper.load(url.openStream());
} catch (IOException e) {
throw new DaoException(e, ExceptionCode.READ_CONFIG_FAILED);
} finally {
if (is != null) {
try {
is.close();
is = null;
} catch (IOException e) {
throw new DaoException(e, ExceptionCode.COLSE_FILE_FAILED);
}
}
}
return proper.getProperty("key1") + "," + proper.getProperty("key2");
}
}
package com.iteye.redhacker.jersey.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.iteye.redhacker.jersey.dao.TestDao;
import com.iteye.redhacker.jersey.exception.ExceptionCode;
import com.iteye.redhacker.jersey.exception.ServiceException;
@Component
public class TestService {
@Autowired
private TestDao testDao;
public String sayHello(int n) {
// 业务上规定n不能大于10
if (n > 10) {
throw new ServiceException(ExceptionCode.MUST_BE_LESS_THAN_10);
}
return testDao.sayHello();
}
/**
* @param testDao the testDao to set
*/
public void setTestDao(TestDao testDao) {
this.testDao = testDao;
}
}
package com.iteye.redhacker.jersey.delegate;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import com.iteye.redhacker.jersey.service.TestService;
import com.sun.jersey.api.spring.Autowire;
@Path("/test")
@Autowire
public class TestResources {
private TestService testService;
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayHello(@QueryParam("n") int n) {
return testService.sayHello(n);
}
/**
* @param testService the testService to set
*/
public void setTestService(TestService testService) {
this.testService = testService;
}
}
package com.iteye.redhacker.jersey.jaxrs;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
import org.apache.log4j.Logger;
import org.springframework.web.context.WebApplicationContext;
import com.iteye.redhacker.jersey.exception.BaseException;
import com.iteye.redhacker.jersey.exception.ExceptionCode;
import com.sun.jersey.api.NotFoundException;
/**
* 统一异常处理器
*/
@Provider
public class ExceptionMapperSupport implements ExceptionMapper<Exception> {
private static final Logger LOGGER = Logger
.getLogger(ExceptionMapperSupport.class);
private static final String CONTEXT_ATTRIBUTE = WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE;
@Context
private HttpServletRequest request;
@Context
private ServletContext servletContext;
/**
* 异常处理
*
* @param exception
* @return 异常处理后的Response对象
*/
public Response toResponse(Exception exception) {
String message = ExceptionCode.INTERNAL_SERVER_ERROR;
Status statusCode = Status.INTERNAL_SERVER_ERROR;
WebApplicationContext context = (WebApplicationContext) servletContext
.getAttribute(CONTEXT_ATTRIBUTE);
// 处理unchecked exception
if (exception instanceof BaseException) {
BaseException baseException = (BaseException) exception;
String code = baseException.getCode();
Object[] args = baseException.getValues();
message = context.getMessage(code, args, exception.getMessage(),
request.getLocale());
} else if (exception instanceof NotFoundException) {
message = ExceptionCode.REQUEST_NOT_FOUND;
statusCode = Status.NOT_FOUND;
}
// checked exception和unchecked exception均被记录在日志里
LOGGER.error(message, exception);
return Response.ok(message, MediaType.TEXT_PLAIN).status(statusCode)
.build();
}
}
package com.iteye.redhacker.jersey.exception;
/**
* 异常基类,各个模块的运行期异常均继承与该类
*/
public class BaseException extends RuntimeException {
/**
* the serialVersionUID
*/
private static final long serialVersionUID = 1381325479896057076L;
/**
* message key
*/
private String code;
/**
* message params
*/
private Object[] values;
/**
* @return the code
*/
public String getCode() {
return code;
}
/**
* @param code the code to set
*/
public void setCode(String code) {
this.code = code;
}
/**
* @return the values
*/
public Object[] getValues() {
return values;
}
/**
* @param values the values to set
*/
public void setValues(Object[] values) {
this.values = values;
}
public BaseException(String message, Throwable cause, String code, Object[] values) {
super(message, cause);
this.code = code;
this.values = values;
}
}
package com.iteye.redhacker.jersey.exception;
public class DaoException extends BaseException {
/**
* Constructors
*
* @param code
* 错误代码
*/
public DaoException(String code) {
super(code, null, code, null);
}
/**
* Constructors
*
* @param cause
* 异常接口
* @param code
* 错误代码
*/
public DaoException(Throwable cause, String code) {
super(code, cause, code, null);
}
/**
* Constructors
*
* @param code
* 错误代码
* @param values
* 一组异常信息待定参数
*/
public DaoException(String code, Object[] values) {
super(code, null, code, values);
}
/**
* Constructors
*
* @param cause
* 异常接口
* @param code
* 错误代码
* @param values
* 一组异常信息待定参数
*/
public DaoException(Throwable cause, String code, Object[] values) {
super(code, null, code, values);
}
private static final long serialVersionUID = -3711290613973933714L;
}
read.file.failed=读取文件失败 read.config.failed=读取配置项失败 must.be.less.than.10=参数必须小于10 colse.file.failed=关闭文件失败 request.not.found=没有找到相应的服务 internal.server.error=服务器内部错误
<Host> ... <Context path="/a" reloadable="true" docBase="D:/workspace/test/JerseyExceptionMapperTest/web" /> </Host>
[2013-08-15 00:25:55] [ERROR] 参数必须小于10 com.iteye.redhacker.jersey.exception.ServiceException: must.be.less.than.10 at com.iteye.redhacker.jersey.service.TestService.sayHello(TestService.java:20) at com.iteye.redhacker.jersey.delegate.TestResources.sayHello(TestResources.java:21) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1483) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1414) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1363) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1353)
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有