(还是有点新的春天)
我需要的是在同一时间,服务方法@Scheduled和@Transactional,让我得到调用DAO在里面.
声明式事务已启用,事务管理器org.springframework.orm.hibernate3.HibernateTransactionManager基于hibernate会话工厂.
服务类不实现任何接口,因此使用CGLIB代理.
这个设置一般工作正常(从Web堆栈调用的方法,即Struts),但是这个方法在调度程序调用时引发异常.
以下是相关的代码:
服务方法(调用类ClientWakeAndTerminateManager):
@Scheduled(initialDelay = 5000, fixedRateString = "${rmi.server.threads.clientsScheduleManagement.rate}")
@Transactional(readOnly = true)
public void runCheck(){
//Call a read-only DAO method (the DAO is @Autowired as a class field)
//do some stuff with the data loaded from DB
}
Run Code Online (Sandbox Code Playgroud)
我的应用程序上下文的相关部分:
<!-- switch on the transactional infrastructure -->
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
<!-- Utility class to execute transactional code where use of annotation is not possible -->
<bean class="org.springframework.transaction.support.TransactionTemplate" id="txTemplate">
<constructor-arg …Run Code Online (Sandbox Code Playgroud) 我有一个Java webapp项目,我在Eclipse(更准确地说是MyEclipse 10)中开发并使用Maven 3构建.
我有以下布局(仅包括与我的问题相关的文件:
project root
|-- src
| |-- main
| | |-- java
| | |-- resources
| | | |-- log4j.xml
| | | +-- struts.properties
| | |-- webapp
| | | |-- META-INF
| | | | +--context.xml
| | |-- config
| | | |-- test
| | | | |--log4j.xml
| | | | |--struts.properties
| | | | +--context.xml
| | | +-- prod
| | | | |--log4j.xml
| | …Run Code Online (Sandbox Code Playgroud) 我有一个多模块Maven + Spring项目.一些模块依赖于其他模块.
假设我们有一个名为services依赖于命名模块的模块persistence.
服务模块:
persistence上下文persistence模块该persistence模块定义了一些与...持久性相关的配置:数据源,JPA,事务......
它有一些依赖性来测试限于测试范围的DB(JDBC驱动程序,DBCP,H2),因为在部署应用程序时,DataSource将在容器(Tomcat)中定义并通过JNDI访问.
现在,我想在services模块的Maven测试阶段访问模块的测试范围(传递)依赖关系persistence.
所述的Maven手册(表3.1)说,通常,测试范围依赖是不可传递地.
是否有可能在多模块项目的背景下以某种方式获取它们?
如果没有什么是好的选择?(在父pom中定义测试依赖项?...)
看java的hashmap实现,无法理解一些行背后的原因.在下面从这里复制的代码中,在365-367行中,我无法理解他们为什么先将e.key赋值给k然后将==与key [(k = e.key)== key进行比较].为什么不直接做(e.key == key).此模式在代码中出现多次.
359
360 final Entry<K,V> getEntry(Object key) {
361 int hash = (key == null) ? 0 : hash(key.hashCode());
362 for (Entry<K,V> e = table[indexFor(hash, table.length)];
363 e != null;
364 e = e.next) {
365 Object k;
366 if (e.hash == hash &&
367 ((k = e.key) == key || (key != null && key.equals(k))))
368 return e;
369 }
370 return null;
371 }
Run Code Online (Sandbox Code Playgroud) 对于资金不多的中小型NGO,我正在寻找一个简单的文档管理系统(不是Web CMS).要求相对简单:
可选但很好:
根据我对SO的网络和其他线程的研究,我归结为这三种产品:
对于KT的偏爱,另外两个人对我们的简单要求感觉有点过分.我也在关注MS Sharepoint Foundation(ex-Sharepoint Services),但这意味着购买我认为他们不想要的Windows Server许可证.
有人可以给我一些关于这些产品的反馈,特别是KT吗?你会选择(或避免)哪一个?我错过了还有其他合适的解决方案吗?欢迎任何信息!
我试图重现以下基于Angular2的Ionic2应用程序中使用Angular 1.x拦截器和承诺成功实现的行为:
如果状态代码是401,那么
一个.再提出注册客户的请求.这将提供一些我随后可以附加到每个请求的令牌.
湾 重试orignal请求并通过promise/observable将结果提供给调用者
如果错误状态是401之外的其他任何内容,则只需将流程正常地传递给调用者
注意:注册过程不需要用户的任何干预(没有登录),所以我希望它对用户完全透明.我首次加载应用时注册一次,但会话最终会过期,我需要自动重新注册.
这是原始的Angular 1实现(我只包括responseError拦截器的一部分):
responseError : function(rejection){
if(rejection.status == 401){
$log.info('Intercepting unauthorized 401 response. Will try to re-register the session and retry the request.');
var security = $injector.get('SecurityService');
var $http = $injector.get('$http');
return security.registerSession().then(function(){
return $http(rejection.config);
});
}else{
return rejection;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我已经包装了Angular2的HTTP服务,我可以做一些简单的事情,比如为每个请求添加一个标头.但是,我正在努力使用Angular2和Observables重现相同的行为.
到目前为止我的尝试,这是我的服务将调用的HTTP包装器的请求方法:
request(url: string | Request, options?: RequestOptionsArgs): Observable<Response> {
let req: Request = this.buildRequest(url, options);
this.beforeCall(req);
var observable = this.http
.request(req)
.retry(3)
.catch(res => {
debugger;
console.log("ERROR! " …Run Code Online (Sandbox Code Playgroud) 我有一个在Tomcat 6中运行的Java webapp,它从远程URL加载RSS提要.
我使用罗马为我处理RSS提要和不同的格式.连接部分看起来像这样:
try{
feedSource = new URL(rssObject.getAsset());
}catch(MalformedURLException mue){
logger.error(...);
throw mue;
}
try{
URLConnection connection = feedSource.openConnection();
feed = new SyndFeedInput().build(new XmlReader(connection));
}catch(Exception){handle...}
Run Code Online (Sandbox Code Playgroud)
代码工作正常,除了在这个新客户端,他们使用代理.
为了使用代理,我设置了http.proxyHost和proxyPort系统属性:
System.setProperty("http.proxyHost", proxyHost);
System.setProperty("http.proxyPort", proxyPort);
System.setProperty("https.proxyHost", proxyHost);
System.setProperty("https.proxyPort", proxyPort);
Run Code Online (Sandbox Code Playgroud)
HTTP GET是代理好的,但现在我收到HTTP 502错误(坏网关或类似的东西).
分析与Wireshark的HTTP交换,我注意到代理需要身份验证.它发送HTTP 507. Java以某种方式尝试进行身份验证,但它使用了错误的用户名和密码.似乎使用主机名作为用户名,对于我不知道的密码.
所以我尝试实现Authenticator方法来指定用户名+密码:
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
logger.info(MessageFormat.format("Generating PasswordAuthentitcation for proxy authentication, using username={0} and password={1}.", username, password));
return new PasswordAuthentication(username, password.toCharArray());
}
});
Run Code Online (Sandbox Code Playgroud)
现在我的问题是它被忽略了.永远不会调用getPasswordAuthentication方法.我没有在日志文件中看到日志记录语句并使用Wireshark我可以看到它仍然使用主机名作为用户名.
为什么?似乎java不知何故试图在没有咨询Authenticator的情况下自己进行身份验证.
代理似乎是使用NTLM进行身份验证的MS设备.java中是否有一些内置机制来处理这个问题?应用程序运行的机器是Win Server 2008 R2.
我有一个带有文件上传方法的Jersey服务,看起来像这样(简化):
@POST
@Path("/{observationId : [a-zA-Z0-9_]+}/files")
@Produces({ MediaType.APPLICATION_JSON})
@Consumes(MediaType.MULTIPART_FORM_DATA)
@ApiOperation(
value = "Add a file to an observation",
notes = "Adds a file to an observation and returns a JSON representation of the uploaded file.",
response = ObservationMediaFile.class
)
@ApiResponses({
@ApiResponse(code = 404, message = "Observation not found. Invalid observation ID."),
@ApiResponse(code = 406, message= "The media type of the uploaded file is not supported. Currently supported types are 'images/*' where '*' can be 'jpeg', 'gif', 'png' or 'tiff',")
})
public …Run Code Online (Sandbox Code Playgroud) 我今天第一次尝试在IntelliJ IDEA中使用"架子"功能.我搁置了所有当前的更改,以便我可以快速修复错误,提交它,然后再回到我当前的工作中.
当我提交"架子"动作时,IntelliJ创建了架子,我可以在工具窗口中看到它.然后它恢复,并重新加载项目.
现在,"更改"工具窗口中的" 货架"选项卡不再出现.
但是在文件系统中我可以看到下面的补丁文件.idea/shelf.
为什么?我怀疑问题是该.idea目录本身受版本控制.因此,当我搁置更改时,它的文件被包含在搁置的更改中,然后它被还原,并且IntelliJ不再知道搁置的更改.
我正在使用Git.
如何在更改工具窗口中使IntelliJ识别补丁文件?或者如果不可能,我如何才能仅根据补丁文件恢复这些更改?
以及如何在未遇到此问题的情况下使用此功能?
将.idea目录保存在te VCS中是不好的做法?
免责声明:一般来说,我对three.js、WegGL 和3D 图形比较陌生。
我正在使用 Three.js 以 3D 形式显示 GPS 轨迹中的点。我们必须能够可视化的数据集可能非常大(数十万个点),因此性能非常重要。
我使用一个Points对象,我用一个BufferGeometry包含所有点的对象填充该对象。这些点是按照曲目的顺序添加的,所以按时间顺序。
然后,我们使用PointsMaterial带有 2D 纹理(精灵)的 a 将点表示为一个圆,圆外的区域是透明的。因为颜色是动态的,所以 2D 纹理是动态绘制到画布上的。
问题是,如果我们看轨迹方向上的点,即离相机较远的点是在较近的点之后渲染的点,在点重叠的地方会出现伪影,较近点的透明部分被绘制在更远的点上:
当我们从另一个方向看轨道时,即从后向前渲染的点,问题就消失了:
我尝试了以下两个选项来解决该问题:
alphaTest0和1之间的一个数值,它样的作品
depthWrite: false的材料的点,它呈现漂亮,但随后近点总是绘制在旧的无论相机的方向,它看起来奇怪,是错误的实际渲染深度 顺序中的点从最远的开始到最近的结束的解决方案是什么?
以下是代码的相关部分。
几何的构建。该timeline3d对象包含所有点并来自 XHR 请求:
const particlesGeometry = new BufferGeometry();
const vertices = [];
for (let i = 0; i < timeline3d.points.length; i++) {
const coordinates = timeline3d.points[i].sceneCoordinates;
vertices.push(coordinates[0], coordinates[1], coordinates[2]);
}
particlesGeometry.addAttribute('position', …Run Code Online (Sandbox Code Playgroud) java ×5
maven ×2
3d ×1
angular ×1
dependencies ×1
document ×1
dvcs ×1
eclipse ×1
ecm ×1
git ×1
hashmap ×1
hibernate ×1
javascript ×1
jersey ×1
multi-module ×1
myeclipse ×1
networking ×1
proxy ×1
rest ×1
rxjs ×1
spring ×1
swagger ×1
swagger-ui ×1
three.js ×1
typescript ×1
unit-testing ×1