本帖最后由 小石姐姐 于 2017-12-11 15:11 编辑
【切点表达式类--spring开启事务配置中出现的异常】
Java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting '(' at character position0 类异常
解决方案:
错误前:
<aop:advisor advice-ref="txAdvice" pointcut="txPointcut"/>
修正后:
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
【在ssh框架整合的时候出现异常:找不到setter和getter的问题】
重点留意:
属性的变量名与applicationContext.xml中<bean>下<property name="">中的name值是否对应,否则很有可能报错
【在ssh框架整合的时候出现异常:空指针异常】
重点留意:
在struts.xml文件中,action的class的值是否为在applicationContext.xml文件中aciton对应的bean的id名
<action name="user_*" class="userAction" method={1}>
<result name="success">/success.jsp</result>
</action>
【ssh整合action中找不到方法】
java.lang.NoSuchMethodException: com.cpstory.web.UserAction.login()
重点留意:
1.方法不能被private修饰
2.检查大小写是否正确
3.方法名是否写错
【ssh整合之路径填写正确,注解配置正确,还是报找不到路径】
重点留意:
aciton所在的包中,该包包名或者父类包名是否为action actions struts struts2
【ssh在整合hibernate出现no session的解决办法】
在web.xml中配置:
[注意]:以下配置需要配置在struts2核心过滤器前面
<!-- 解决hibernate延迟加载问题 -->
<filter>
<filter-name>openSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>openSessionInView</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
【ssd在整合spring data 中出现no session的解决办法】
[注意]:以下配置需要配置在struts2核心过滤器前面
<!-- 配置jpa解决no session问题过滤器 -->
<filter>
<filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
<init-param>
<!-- 指定org.springframework.orm.jpa.LocalEntityManagerFactoryBean在spring配置文件中的名称,默认值为entityManagerFactory
如果LocalEntityManagerFactoryBean在spring中的名称不是entityManagerFactory,该参数一定要指定,否则会出现找不到entityManagerFactory的例外 -->
<param-name>entityManagerFactoryBeanName</param-name>
<param-value>entityManagerFactory</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
【关于使用easyui 在做修改回显的对象出现违反唯一约束的异常】
需要在form表单添加一个:
<!--提供隐藏域 装载id,这是必须的,否则在修改的时候会报违反唯一约束的错误 -->
<input type="hidden" name="id"/>
【设置vscode 默认字符集编码】
将文件-->首选项-->设置中的"files.autoGuessEncoding"项的值改为true即可。
【spring data jpa 和webservice问题】
今天在使用webservice rs犯了一个常识性错误
1在使用client 在发送get请求 的时候 service接口中误使用put方式进行接收
同时,没有添加产出者注解@Produces,导致查询结果一直出现返回数据异常(405)
2在使用spring data jpa的时候没有注意到在使用查询方法findByTelephone()的时候返回结果不是唯一,出现了查询结果异常,
这里一定要注意,在使用jpa的默认方法的时候一定要 再次确认返回的数据类型
【使用kindeditor插件注意事项】
//KindEditor 工作原理,隐藏原来 textarea 文本框,生成 iframe,在 iframe 里面进行编辑,需要加上这条:
window.editor.sync();
【struts2拦截器interceptor问题之一】
问题描述:
在使用WebService技术调第三方接口的时候,经过检查web.xml中servlet配置正确,applicationContext.xml中配置正确。接口连接拼接正确
发现以下错误信息:
经过反复检查,发现在serviceImpl中没有进行注入repository...... @Autowired
记录下来,铭记于心。
09:44:39,372 INFO LoggingInInterceptor:250 - Inbound Message
----------------------------
ID: 1
Address: http://localhost:9001/bos_management/services/promotionService/findpromotionbypage?page=1&rows=2
Http-Method: GET
Content-Type:
Headers: {Accept=[text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8], accept-encoding=[gzip, deflate, sdch, br], accept-language=[zh-CN,zh;q=0.8], cache-control=[max-age=0], connection=[keep-alive], Content-Type=[null], cookie=[tale_remember_author=cpstory; tale_remember_mail=278369091%40qq.com; tale_remember_url=http%3A%2F%2Fwww.baidu.com; S_L_ID=UVpo//LeR+sFt0AIDPg5JQ==], host=[localhost:9001], upgrade-insecure-requests=[1], user-agent=[Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36]}
--------------------------------------
09:44:39,397 WARN PhaseInterceptorChain:452 - Application {http://impl.outputservice.service.bos.cpstory.com/}OutputPromotionServiceImpl has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault
Caused by: java.lang.NullPointerException
at com.cpstory.bos.service.outputservice.impl.OutputPromotionServiceImpl.findPromotionByPage(OutputPromotionServiceImpl.java:23)
09:44:39,403 WARN PhaseInterceptorChain:482 - Exception in handleFault on interceptor org.apache.cxf.jaxrs.interceptor.JAXRSDefaultFaultOutInterceptor@24a5bb3
org.apache.cxf.interceptor.Fault
Caused by: java.lang.NullPointerException
at com.cpstory.bos.service.outputservice.impl.OutputPromotionServiceImpl.findPromotionByPage(OutputPromotionServiceImpl.java:23)
【quartz与spring进行整合的时候出现bean无法注入的问题】:
【解决方案一】:
【applicationContext.xml配置文件中】:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd ">
<!-- 扫描@Controller、@Service、@Repository、@Component等 -->
<context:component-scan base-package="com.cpstory.quartz.service" />
<bean id="helloJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="helloService" />
<property name="targetMethod" value="sayHi" />
</bean>
<!-- SimpleTriggerFactoryBean,由spring提供 -->
<bean id="simpleTrigger"
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="helloJob" />
<!-- 3秒后第一次执行 -->
<property name="startDelay" value="3000" />
<!-- 之后每5秒重复执行一次 -->
<property name="repeatInterval" value="5000" />
</bean>
<!-- scheduler,scheduler关联trigger,trigger关联job -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<!-- <property name="jobFactory" ref="jobFactory" /> -->
<property name="triggers">
<list>
<ref bean="simpleTrigger"/>
</list>
</property>
</bean>
</beans>
【Job类中。。。。。】
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.cpstory.quartz.service.service.HelloService;
@Component //需要将jobbean交给spring来管理
public class HelloJob implements Job{
@Autowired
private HelloService helloService;
public void execute(JobExecutionContext context) throws JobExecutionException {
helloService.sayHi();
}
}
【service类中】:
import org.springframework.stereotype.Service;
@Service
public class HelloService {
public void sayHi(){
System.out.println("我是HelloService.....");
}
}
【解决方案二:自定义的jobFactory】:
【applicationContext.xml配置文件中】:
【注意!】:这种方式的Job不能直接注入,否则会报错!!!!!!!
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd ">
<!-- 扫描@Controller、@Service、@Repository、@Component -->
<context:component-scan base-package="com.cpstory.quartz.service" />
<!-- 配置执行流程说明:
1.注入由spring提供的JobDetailFactoryBean,传入参数(自定义的job)来获得一个JobDetail执行任务
2.注入由spring提供的SimpleTriggerFactoryBean,传入参数
(由1产生的JobDetail、第一次执行时间、执行间隔时间),来获得一个Trigger触发器
3.注入由spring提供的SchedulerFactoryBean,传入参数
(自定义的jobFactory[需要添加注解将该类交给spring进行管理]、
由2产生的所有trigger )
-->
<bean id="helloJob"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="com.cpstory.quartz.service.job.HelloJob" />
</bean>
<!-- SimpleTriggerFactoryBean,由spring提供 -->
<bean id="simpleTrigger"
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="helloJob" />
<!-- 3秒后第一次执行 -->
<property name="startDelay" value="3000" />
<!-- 之后每5秒重复执行一次 -->
<property name="repeatInterval" value="5000" />
</bean>
<!-- scheduler,scheduler关联trigger,trigger关联job -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="jobFactory" ref="jobFactory" />
<property name="triggers">
<list>
<ref bean="simpleTrigger"/>
</list>
</property>
</bean>
</beans>
【Job类中】:
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import com.cpstory.quartz.service.service.HelloService;
public class HelloJob implements Job{
/**
* 在这里通过自定义jobFactory来解决helloService无法被自动注入的问题
* 因为service是通过自动注入来获得的,但是HelloJob并不是被spring所管理的
* 因此需要在配置文件中配置了:
* <property name="jobFactory" ref="jobFactory" />
* 来引入我们自定义的jobFactory(参见jobFactory的注释)
* 这样就最终实现了让HelloJob被spring所管理
*/
@Autowired
private HelloService helloService;
public void execute(JobExecutionContext context) throws JobExecutionException {
helloService.sayHi();
}
}
【service类中】:
import org.springframework.stereotype.Service;
@Service
public class HelloService {
public void sayHi(){
System.out.println("我是HelloService.....");
}
}
【自定义JobFactory类中】:
import org.quartz.spi.TriggerFiredBundle;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.scheduling.quartz.AdaptableJobFactory;
import org.springframework.stereotype.Service;
/**
* 说明: jobFactory通过注解@service被spring所管理
* 同时注入了一个AutowireCapableBeanFactory
* 在createJobInstance()方法中,通过传入的bundle或得到一个job的实例,
* 再将这个job实例注入到spring容器中
*/
@Service("jobFactory")
public class JobFactory extends AdaptableJobFactory {
@Autowired
private AutowireCapableBeanFactory capableBeanFactory;
protected Object createJobInstance(TriggerFiredBundle bundle)
throws Exception {
Object jobInstance = super.createJobInstance(bundle);
capableBeanFactory.autowireBean(jobInstance);
return jobInstance;
}
}
【hibernate瞬时态对象转为持久态出现的异常Transient】
[异常信息]:
org.hibernate.TransientPropertyValueException:
object references an unsaved transient instance - save the transient instance before flushing :
com.cpstory.bos.domain.take_delivery.Order.recArea -> com.cpstory.bos.domain.base.Area;
nested exception is java.lang.IllegalStateException:
org.hibernate.TransientPropertyValueException:
object references an unsaved transient instance - save the transient instance before flushing :
com.cpstory.bos.domain.take_delivery.Order.recArea -> com.cpstory.bos.domain.base.Area
[解决办法]:
对象是从数据库中查出来的,而不是new出来的,先去数据库中查询
【关于quartz调度框架的问题】
如果不同的action调用quartz框架所调用的service服务的时候,会出现异常,因此需要另外创建service进行调用
【在处理shiro权限框架的时候遇到一个问题】
Caused by: org.springframework.data.mapping.PropertyReferenceException: No property login found for type com.wzx.bean.User
经过检查,发现问题出在repository导包处,错误的导入elasticsearch的Query包,因此报错
在处理类似问题的时候,一定要注意检查1.是否是使用了jpa的默认查询规范,如果是使用@Query注解进行自定义查询,一定要记得检查导包是否正确
【在配置spring + ehcache + shiro 进行整合的时候出现了一个问题】
Caused by: java.lang.IllegalStateException: Cannot convert value of
type [java.lang.String] to required type [org.apache.shiro.cache.CacheManager]
for property 'cacheManager': no matching editors or conversion strategy found
出现问题位置:
<!-- 安全管理器 -->
<bean id="securityManager"
class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="bosRealm" />
<property name="cacheManager" value="shiroCacheManager" />
</bean>
原因: 错误的将ref写成了value
【在整合ehcach的时候出现循环应用问题】
返回了一个125MB的json串,问题在一个po类中两个集合出现了相互引用的情况
解决办法:在其中一个上面加上注解@JSON(serialize = true)
【elasticsearch 出现栈内存溢出】
在实体类上没有配置注解@JsonIgnore |
|