小编Noa*_*evo的帖子

Java中有Mutex吗?

在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

106
推荐指数
5
解决办法
19万
查看次数

自动装配同一类的两个不同的bean

我有一个包装连接池的类,该类从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)

java spring annotations

33
推荐指数
2
解决办法
4万
查看次数

从spring异常处理程序中读取httprequest内容

我使用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)

java spring spring-mvc exceptionhandler

13
推荐指数
3
解决办法
2万
查看次数

调用request.getReader()后重置HttpRequest

有没有办法在a上调用getReader()方法HttpRequest,然后"重置"请求,以便其他调用getReader()不会抛出java.lang.IllegalStateException

java httprequest java-ee

13
推荐指数
2
解决办法
1万
查看次数

记录HttpRequest参数和请求正文

我正在尝试为我的Web应用程序创建请求日志.我使用Spring 3. 0.

我实现了一个扩展类,HandlerInterceptorAdapter并使用它preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)来拦截请求.

在方法中,我希望能够记录请求体(我的参数是XML中直接写入请求体的对象),并且我使用 request.getReader();

问题是 - 稍后我会IllegalStateException在弹簧控制器尝试读取请求时得到一个.

有办法做我想做的事吗?

java spring-mvc httprequest

10
推荐指数
1
解决办法
2万
查看次数

Java按位运算与BigInteger

在性能方面使用纯按位运算(& | ^ ~)而不是使用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)

java bit-manipulation

7
推荐指数
1
解决办法
5637
查看次数

Hibernate - 未在jar中扫描的弹簧注释实体

我有一个包含注释实体类的包,我将其导入到我的Web项目中.当tomcat部署项目时,不会扫描jar中的实体类以进行注释.有没有办法告诉spring在jar文件中搜索带注释的类?即:

<context:component-scan base-package="{path to jar or something}"/>
Run Code Online (Sandbox Code Playgroud)

spring hibernate

6
推荐指数
2
解决办法
1万
查看次数

春季预定作业中的 Hibernate Lazy init 异常

我有一个春季计划作业 ( @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)

java spring hibernate

6
推荐指数
1
解决办法
3714
查看次数

如何在每次选择之前阻止JPA实体管理器刷新

我在春天使用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)

spring hibernate jpa

5
推荐指数
1
解决办法
8871
查看次数

在集合字段更改时触发 JPA 侦听器

@PreUpdate一旦我的实体发生变化,我就会使用 EntityListeners ( ) 来执行某些操作。但是我注意到实体内集合的更改不会触发 JPA 实体侦听器,这是有道理的,因为包含实体的表没有更改,而是多对多表。

有没有办法在集合更改的情况下使实体侦听器触发?

java persistence jpa listener

5
推荐指数
1
解决办法
1372
查看次数