在java中是否存在Mutex对象或创建一个?我问,因为用1许可证初始化的信号量对象对我没有帮助.想想这个案例:
try {
semaphore.acquire();
//do stuff
semaphore.release();
} catch (Exception e) {
semaphore.release();
}
Run Code Online (Sandbox Code Playgroud)
如果在第一次获取时发生异常,则catch块中的释放将增加许可,并且信号量不再是二进制信号量.
请问是正确的方法吗?
try {
semaphore.acquire();
//do stuff
} catch (Exception e) {
//exception stuff
} finally {
semaphore.release();
}
Run Code Online (Sandbox Code Playgroud)
上面的代码会确保信号量是二进制的吗?
java mutex semaphore java.util.concurrent concurrent-programming
我有一个包装连接池的类,该类从spring配置获取其连接细节,如下所示:
<bean id="jedisConnector" class="com.legolas.jedis.JedisConnector" init-method="init" destroy-method="destroy">
<property name="host" value="${jedis.host}" />
<property name="port" value="${jedis.port}" />
</bean>
Run Code Online (Sandbox Code Playgroud)
此bean稍后在服务中使用,并使用@Autowire注释自动装配.
我的问题是,我如何复制这个bean并给它不同的连接细节,然后@Autowire在服务中.意思除了上面我还会:
<bean id="jedisConnectorPOD" class="com.legolas.jedis.JedisConnector" init-method="init" destroy-method="destroy">
<property name="host" value="${jedis.pod.host}" />
<property name="port" value="${jedis.pod.port}" />
</bean>
Run Code Online (Sandbox Code Playgroud)
并在服务中:
@Autowired //bean of id jedisConnector
JedisConnector beanA;
@Autowired //bean of id jedisConnectorPOD
JedisConnector beanB;
Run Code Online (Sandbox Code Playgroud) 我使用Spring的@ExceptionHandler注释来捕获控制器中的异常.
有些请求将POST数据保存为写入请求体的纯XML字符串,我想读取该数据以便记录异常.问题是,当我在异常处理程序中请求输入流并尝试从中读取时,流返回-1(空).
异常处理程序签名是:
@ExceptionHandler(Throwable.class)
public ModelAndView exception(HttpServletRequest request, HttpServletResponse response, HttpSession session, Throwable arff)
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?有没有办法访问请求正文?
我的控制器:
@Controller
@RequestMapping("/user/**")
public class UserController {
static final Logger LOG = LoggerFactory.getLogger(UserController.class);
@Autowired
IUserService userService;
@RequestMapping("/user")
public ModelAndView getCurrent() {
return new ModelAndView("user","response", userService.getCurrent());
}
@RequestMapping("/user/firstLogin")
public ModelAndView firstLogin(HttpSession session) {
userService.logUser(session.getId());
userService.setOriginalAuthority();
return new ModelAndView("user","response", userService.getCurrent());
}
@RequestMapping("/user/login/failure")
public ModelAndView loginFailed() {
LOG.debug("loginFailed()");
Status status = new Status(-1,"Bad login");
return new ModelAndView("/user/login/failure", "response",status);
}
@RequestMapping("/user/login/unauthorized")
public ModelAndView unauthorized() {
LOG.debug("unauthorized()");
Status …Run Code Online (Sandbox Code Playgroud) 有没有办法在a上调用getReader()方法HttpRequest,然后"重置"请求,以便其他调用getReader()不会抛出java.lang.IllegalStateException?
我正在尝试为我的Web应用程序创建请求日志.我使用Spring 3. 0.
我实现了一个扩展类,HandlerInterceptorAdapter并使用它preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)来拦截请求.
在方法中,我希望能够记录请求体(我的参数是XML中直接写入请求体的对象),并且我使用 request.getReader();
问题是 - 稍后我会IllegalStateException在弹簧控制器尝试读取请求时得到一个.
有办法做我想做的事吗?
在性能方面使用纯按位运算(& | ^ ~)而不是使用BigInteger(BigInteger.and BigInteger.or)进行按位运算是否有优势?记忆?还要别的吗?
因为我使用BigInteger进行按位运算,因为生成的代码更加可读.
我将使用的代码示例:
BigInteger bNum1 = new BigInteger("0");
BigInteger bNum2 = new BigInteger("0");
BigInteger bNum3 = new BigInteger("0");
bNum1 = bNum1.setBit(0);
bNum2 = bNum2.setBit(1);
bNum3 = bNum3.setBit(2);
BigInteger bMask = bNum3.or(bNum1);
System.out.println(bMask.and(bNum1).equals(bMask));
System.out.println(bMask.and(bNum2).equals(bMask));
System.out.println(bMask.and(bNum3).equals(bMask));
System.out.println(bMask.and(bMask).equals(bMask));
int num1 = 1 << 0;
int num2 = 1 << 1;
int num3 = 1 << 2;
int mask = num3 | num1;
System.out.println((mask & num1) == mask);
System.out.println((mask & num2) == mask);
System.out.println((mask & num3) …Run Code Online (Sandbox Code Playgroud) 我有一个包含注释实体类的包,我将其导入到我的Web项目中.当tomcat部署项目时,不会扫描jar中的实体类以进行注释.有没有办法告诉spring在jar文件中搜索带注释的类?即:
<context:component-scan base-package="{path to jar or something}"/>
Run Code Online (Sandbox Code Playgroud) 我有一个春季计划作业 ( @Scheduled),它根据数据库中的收件人列表从我的系统发送电子邮件。
该方法用注解进行@Scheduled注解,它从另一个接口调用一个方法,接口中的方法用注解进行@Transactional注解。
现在,当我手动调用预定方法时,它运行良好。但是当 Spring 调度程序调用该方法时,我在实现上述接口的方法中得到了 LazyInitFailed 异常。
我究竟做错了什么?
代码:
预定方法:
@Component
public class ScheduledReportsSender {
public static final int MAX_RETIRES = 3;
public static final long HALF_HOUR = 1000 * 60 * 30;
@Autowired
IScheduledReportDAO scheduledReportDAO;
@Autowired
IDataService dataService;
@Autowired
IErrorService errorService;
@Scheduled(cron = "0 0 3 ? * *") // every day at 2:10AM
public void runDailyReports() {
// get all daily reports
List<ScheduledReport> scheduledReports = scheduledReportDAO.getDaily();
sendScheduledReports(scheduledReports);
}
private void sendScheduledReports(List<ScheduledReport> …Run Code Online (Sandbox Code Playgroud) 我在春天使用JPA(以hibernate作为提供者)用于web应用程序.我有一些方法可以构造一个传递给UI的复杂对象.作为这些方法流程的一部分,select执行一些SQL语句.问题是实体管理器在每次选择之前刷新,此操作需要花费大量时间并且会妨碍性能.有没有办法阻止实体经理在每次选择之前刷新?(我不关心上面选择选择中的陈旧数据)
谢谢.
这是我的GenericDAO
@Repository
public abstract class GenericDAOWithJPA<T, ID extends Serializable> implements IGenericDAO<T, ID> {
private static final int MAX_RETRIES = 3;
private static final long WAIT_INTERVAL_MS = 1000;
static final Logger LOG = LoggerFactory.getLogger(GenericDAOWithJPA.class);
private Class<T> persistentClass;
protected EntityManager entityManager;
@SuppressWarnings("unchecked")
public GenericDAOWithJPA() {
this.persistentClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
@Override
@PersistenceContext
public void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
this.entityManager.setFlushMode(FlushModeType.COMMIT)
}
@Override
public Class<T> getPersistentClass() {
return persistentClass;
}
/* (non-Javadoc)
* @see com.legolas.dao.IGenericDAO#find(ID)
*/
@Override …Run Code Online (Sandbox Code Playgroud) @PreUpdate一旦我的实体发生变化,我就会使用 EntityListeners ( ) 来执行某些操作。但是我注意到实体内集合的更改不会触发 JPA 实体侦听器,这是有道理的,因为包含实体的表没有更改,而是多对多表。
有没有办法在集合更改的情况下使实体侦听器触发?
java ×8
spring ×5
hibernate ×3
httprequest ×2
jpa ×2
spring-mvc ×2
annotations ×1
java-ee ×1
listener ×1
mutex ×1
persistence ×1
semaphore ×1