我有这个代码将JasperReprot导出到XLS:
JasperPrint jprint=JasperFillManager.fillReport(expRpg, null, new JRBeanCollectionDataSource(datalist));
JRXlsExporter exporter = new JRXlsExporter();
exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jprint);
exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, outStream);
exporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
exporter.exportReport();
Run Code Online (Sandbox Code Playgroud)
升级到JasperReports 5.6所有setParameter都被标记为"已弃用",我找不到适应此代码的文档.
如何使用JasperReports 5.6将报告导出到xls ?
我正在使用带有注释的Spring Beans,我需要在运行时选择不同的实现.
@Service
public class MyService {
public void test(){...}
}
Run Code Online (Sandbox Code Playgroud)
例如对于我需要的Windows平台MyServiceWin extending MyService
,对于我需要的linux平台MyServiceLnx extending MyService
.
现在我只知道一个可怕的解决方案:
@Service
public class MyService {
private MyService impl;
@PostInit
public void init(){
if(windows) impl=new MyServiceWin();
else impl=new MyServiceLnx();
}
public void test(){
impl.test();
}
}
Run Code Online (Sandbox Code Playgroud)
请考虑我只使用注释而不是XML配置.
是否可以向特定会话发送消息?
我在客户端和Spring servlet之间有一个未经验证的websocket.当异步作业结束时,我需要向特定连接发送未经请求的消息.
@Controller
public class WebsocketTest {
@Autowired
public SimpMessageSendingOperations messagingTemplate;
ExecutorService executor = Executors.newSingleThreadExecutor();
@MessageMapping("/start")
public void start(SimpMessageHeaderAccessor accessor) throws Exception {
String applicantId=accessor.getSessionId();
executor.submit(() -> {
//... slow job
jobEnd(applicantId);
});
}
public void jobEnd(String sessionId){
messagingTemplate.convertAndSend("/queue/jobend"); //how to send only to that session?
}
}
Run Code Online (Sandbox Code Playgroud)
正如您在此代码中看到的,客户端可以启动异步作业,当它完成时,它需要结束消息.显然,我只需要向申请人发送信息而不是向所有人广播.有一个@SendToSession
注释或messagingTemplate.convertAndSendToSession
方法会很棒.
UPDATE
我试过这个:
messagingTemplate.convertAndSend("/queue/jobend", true, Collections.singletonMap(SimpMessageHeaderAccessor.SESSION_ID_HEADER, sessionId));
Run Code Online (Sandbox Code Playgroud)
但这会向所有会话广播,而不仅仅是指定的会话.
更新2
使用convertAndSendToUser()方法进行测试.这个测试是和正式的Spring教程的破解:https://spring.io/guides/gs/messaging-stomp-websocket/
这是服务器代码:
@Controller
public class WebsocketTest {
@PostConstruct
public void init(){
ScheduledExecutorService statusTimerExecutor=Executors.newSingleThreadScheduledExecutor();
statusTimerExecutor.scheduleAtFixedRate(new Runnable() …
Run Code Online (Sandbox Code Playgroud) 我正在收听硬件事件消息,但我需要去除它以避免太多查询.
这是一个发送机器状态的硬件事件,我必须将其存储在数据库中以用于统计目的,并且有时会发生其状态经常变化(闪烁?).在这种情况下,我想只存储一个"稳定"状态,我想在将状态存储到数据库之前等待1-2秒来实现它.
这是我的代码:
private MachineClass connect()
{
try
{
MachineClass rpc = new MachineClass();
rpc.RxVARxH += eventRxVARxH;
return rpc;
}
catch (Exception e1)
{
log.Error(e1.Message);
return null;
}
}
private void eventRxVARxH(MachineClass Machine)
{
log.Debug("Event fired");
}
Run Code Online (Sandbox Code Playgroud)
我将这种行为称为"去抖动":等待几次才能真正完成其工作:如果在去抖时间内再次触发相同的事件,我必须解除第一个请求并开始等待去抖时间以完成第二个事件.
管理它的最佳选择是什么?只是一次性计时器?
要解释"去抖"功能,请参阅以下关键事件的javascript实现:http: //benalman.com/code/projects/jquery-throttle-debounce/examples/debounce/
在我的应用程序中,我使用的是apache commons Lang v.3.一个需要的图书馆给我一个
java.lang.ClassNotFoundException: org.apache.commons.lang.StringUtils
Run Code Online (Sandbox Code Playgroud)
在commmon.lang和commons.lang3之间是否有构建转换,或者我必须添加两个lang库?
我想启用tomcat CORS过滤器,我将其添加到web.xml:
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我尝试使用自定义过滤器:
<filter>
<filter-name>SimpleCORSFilter</filter-name>
<filter-class>com.common.SimpleCORSFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SimpleCORSFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
有了这个班级:
public class SimpleCORSFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
chain.doFilter(req, res);
}
}
Run Code Online (Sandbox Code Playgroud)
这很好用,你能告诉我为什么吗?我不知道它是否重要但我使用Spring Framework.
我在这个Autowire上遇到了麻烦:
@Controller
public class ChiusuraController {
@Autowired
private ChiusuraProvider chiusuraProvider;
}
Run Code Online (Sandbox Code Playgroud)
用这个bean:
@Service @Transactional
public class ChiusuraProvider extends ThreadProvider {
public void run() {}
}
Run Code Online (Sandbox Code Playgroud)
延伸
public abstract class ThreadProvider extends Thread implements InitializingBean, Runnable, DisposableBean {
...
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'chiusuraController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.cinebot.service.ChiusuraProvider com.cinebot.web.controller.ChiusuraController.chiusuraProvider; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.cinebot.service.ChiusuraProvider] found for dependency: expected at least 1 …
Run Code Online (Sandbox Code Playgroud) 我有一个Web服务器服务,客户端请求智能卡计算并获得结果.可用的智能卡号可以在服务器正常运行时间内减少或增加,例如我可以从阅读器中物理添加或删除智能卡(或许多其他事件......例如异常等).
智能卡计算可能需要一段时间,因此如果存在对Web服务器的并发请求,我必须优化这些作业以使用所有可用的智能卡.
我想过使用智能卡线程池.至少对我而言,不寻常的是,池应该改变其大小,而不是取决于客户端请求,而只取决于智能卡的可用性.
我研究过很多例子:
这是智能卡控件,每个智能卡有一个SmartcardWrapper,每个智能卡都有自己的插槽号.
public class SmartcardWrapper{
private int slot;
public SmartcardWrapper(int slot) {
this.slot=slot;
}
public byte[] compute(byte[] input) {
byte[] out=new byte[];
SmartcardApi.computerInput(slot,input,out); //Native method
return out;
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用每个智能卡一个线程创建一个线程池:
private class SmartcardThread extends Thread{
protected SmartcardWrapper sw;
public SmartcardThread(SmartcardWrapper sw){
this.sw=sw;
}
@Override
public void run() {
while(true){
byte[] input=queue.take();
byte output=sw.compute(input);
// I have to return back the output to the client
}
}
} …
Run Code Online (Sandbox Code Playgroud) java concurrency multithreading smartcard threadpoolexecutor
我需要在多语言应用程序中解析日期字符串.每个用户都有自己的语言环境,然后是日期格式.
如何使用:
new DateTime($datestr);
Run Code Online (Sandbox Code Playgroud)
要么
date_parse($datestr);
Run Code Online (Sandbox Code Playgroud)
使用本地化的日期格式?
假设mm/dd/yyyy为EN日期格式,dd/mm/yyyy为IT日期格式,我做了这个测试:
<?php
echo "EN locale<br>\r\n";
setlocale(LC_ALL, 'en_US');
$date="01/02/2015"; //2th Jan
$date_array=date_parse($date);
$mktime=mktime($date_array['hour'], $date_array['minute'], $date_array['second'], $date_array['month'], $date_array['day'], $date_array['year']);
$datetime=new DateTime($date);
echo date("Y-m-d",$mktime);
echo "<br>\r\n";
echo $datetime->format('Y-m-d');
echo "<br>\r\n";
echo "IT locale<br>\r\n";
setlocale(LC_ALL, 'it_IT');
$date="01/02/2015"; //1th Feb
$date_array=date_parse($date);
$mktime=mktime($date_array['hour'], $date_array['minute'], $date_array['second'], $date_array['month'], $date_array['day'], $date_array['year']);
$datetime=new DateTime($date);
echo date("Y-m-d",$mktime);
echo "<br>\r\n";
echo $datetime->format('Y-m-d');
Run Code Online (Sandbox Code Playgroud)
结果是SAME输出,使用两种语言环境设置,解析以mm/dd/yyyy格式提供.输出始终是2015 - 01 - 02(2月2日)
我有这个streamreader:
Boolean read = false;
while (wline!="exit")
{
while (!read || streamReader.Peek() >= 0)
{
read = true;
Console.Write((char)streamReader.Read());
}
wline = Console.ReadLine();
streamWriter.Write(wline+"\r\n");
streamWriter.Flush();
}
Run Code Online (Sandbox Code Playgroud)
如何设置Read()方法的超时?谢谢
java ×6
spring ×3
c# ×2
apache ×1
autowired ×1
concurrency ×1
cors ×1
date ×1
debouncing ×1
deprecated ×1
events ×1
export ×1
jar ×1
localization ×1
parsing ×1
php ×1
smartcard ×1
sockets ×1
spring-bean ×1
spring-mvc ×1
stomp ×1
streamreader ×1
timeout ×1
tomcat ×1