我需要在注册过程中发送一封电子邮件,因此我正在使用Java Mail API,这工作正常,但观察到电子邮件进程花了将近6秒(这太长了)所以Ajax调用让用户等待响应太久了
因此我决定使用后台线程发送电子邮件,以便用户无需等待Ajax调用响应(Jersey REST Web Service调用)
我的问题是,为每个请求在Web应用程序中创建线程是一个好习惯吗?
@Path("/insertOrUpdateUser")
public class InsertOrUpdateUser {
final static Logger logger = Logger.getLogger(InsertOrUpdateUser.class);
@GET
@Consumes("application/text")
@Produces("application/json")
public String getSalesUserData(@QueryParam(value = "empId") String empId
)
throws JSONException, SQLException {
JSONObject final_jsonobject = new JSONObject();
ExecutorService executorService = Executors.newFixedThreadPool(10);
executorService.execute(new Runnable() {
public void run() {
try {
SendEmailUtility.sendmail(emaildummy);
} catch (IOException e) {
logger.error("failed",e);
}
}
});
}
} catch (SQLException e) {
} catch (Exception e) {
} …Run Code Online (Sandbox Code Playgroud) 我有一个HTML5视频标签,用户可以通过输入类型文件组件添加视频.
我的问题是,点击删除链接,是否可以删除视频?
我试过了
$(document).on("click", ".removepic", function(event)
{
$("#somevideo").val('');
var player = document.getElementById("video");
var currentVID = document.getElementById('currentVID');
// currentVID.setAttribute('src', '');
currentVID.setAttribute('src', '');
player.load();
player.play();
});
Run Code Online (Sandbox Code Playgroud)
通过这样做,我得到了
Uncaught (in promise) DOMException: The play() request was interrupted by a new load request.playlocalVID @ VM79:56onchange @ VM716:91
Run Code Online (Sandbox Code Playgroud)
在下面的小提琴中重现问题的步骤
在服务器控制台我得到
VM79:56Uncaught(在promise中)DOMException:play()请求被新的加载请求中断.
这是我的小提琴
https://jsfiddle.net/q3hhk17e/30/
你能告诉我如何解决这个问题吗?
我正在尝试使用Java Lambda表达式计算迭代次数,但它会引发编译时错误:
Local variable count defined in an enclosing scope must be final or effectively final
Run Code Online (Sandbox Code Playgroud)
public static void main(String[] args) {
List<String> names = new ArrayList<String>();
names.add("Ajeet");
names.add("Negan");
names.add("Aditya");
names.add("Steve");
int count = 0;
names.stream().forEach(s->
{
if(s.length()>6)
count++;
});
}
Run Code Online (Sandbox Code Playgroud) SQL注入的示例
以下用于执行登录功能的Java servlet代码通过接受用户输入来说明漏洞,而无需执行足够的输入验证或转义元字符:
String sql = "select * from user where username='" + username +"' and password='" + password + "'";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
if (rs.next()) {
loggedIn = true;
out.println("Successfully logged in");
} else {
out.println("Username and/or password not recognized");
}
Run Code Online (Sandbox Code Playgroud)
================
现在请告诉我如何修改此代码,以便它不受SQL注入
我有4个模块(4个POM XML文件)和一个父XML文件
我有这个目录结构,请参考屏幕截图
http://postimage.org/image/1gjk3mdg/
当前运行Parent POM.xml文件(内部运行所有Module的POM xml文件)时出现此错误
项目com.bayer:tata-mw:1.0(C:\ tata\middleware\pom.xml)有1个错误[错误]不可解析的父POM:找不到工件com.bayer:tata:pom:1.0-SNAPSHOT并且'parent.relativePath'指向错误的本地POM @第9行,第12列 - > [帮助2]
要解决父POM错误,我将这样的内容引用到我的子POM.xml文件中
<parent>
<groupId>com.bayer</groupId>
<artifactId>tata</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>c:/tata/pom.xml</relativePath>
</parent>
Run Code Online (Sandbox Code Playgroud)
请指导我这是否是正确的方法,因为当我这样做时,错误仍然存在.
谢谢 .
public boolean validate(final Beanform[] bagdata) {
final int length = bagdata.length;
if (length == 4) {
return true;
} else if (length == 1) {
result = "length==1, Length should be greater than 1";
return false;
} else if (length == 3) {
if (bagdata[0].getCycleType() == null) {
result = "Cyclic Type is null for length==3";
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
嗨,
以上是一段java代码,工作正常.但是,当我运行代码aganist PMD.方法应该只有一个出口点,这应该是方法中的最后一个语句
你有没有人可以告诉我如何塑造这个代码,以便它遵循一个方法应该只有一个退出点,这应该是方法中的最后一个语句这个类型的代码中最好的prtacie是什么?
请分享您的经验.
我用这种方式编写了一个简单的Linux脚本
export JAVA_HOME=/usr/local/jdk1.6.0_20
export PATH=/usr/local/jdk1.6.0_20/bin
LIB_DIR=/home/praveen/lib
export CLASSPATH=.:$LIB_DIR/commons-logging-1.0.4.jar:$LIB_DIR/log4j-1.2.8.jar
java -cp $CLASSPATH com.test.Sample
Run Code Online (Sandbox Code Playgroud)
================================================== =============================
上面的脚本运行正常.
但是当我第一次尝试使用它时,却出现了错误
export JAVA_HOME=/usr/local/jdk1.6.0_20
export PATH=/usr/local/jdk1.6.0_20/bin
export CLASSPATH = /home/praveen/lib/commons-logging-1.0.4.jar: /home/praveen/lib/log4j-1.2.8.jar
java -cp $CLASSPATH com.test.Sample
Run Code Online (Sandbox Code Playgroud)
正如您可以观察到的,这两个脚本之间的唯一区别在于,在下面的脚本到类路径中,我不包括当前目录路径(.)
请让我知道,为什么这不会这样?
我从网上拿了这个例子.但是,当我尝试它不是编译说不能将对象转换为字符串
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList names = new ArrayList();
names.add("Amy");
names.add("Bob");
names.add("Chris");
names.add("Deb");
names.add("Elaine");
names.add("Frank");
names.add("Gail");
names.add("Hal");
for (String nm : names)
System.out.println((String)nm);
}
}
Run Code Online (Sandbox Code Playgroud)
如果它是循环的正常,我可以完成list.get(元素索引).toString().但是如何在增强的循环中做到?
我正在使用Liferay 6.
我已经读过Liferay Hooks可以用来修改JSP,属性文件,模型监听器,系统事件,而不用触及Liferay代码.
所以我的问题是,我可以使用Liferay Hooks来修改Liferay登录前后事件吗?
请明确说明 .
谢谢 .
这两者在Drools中有什么区别?意思是说我们可以根据
从加载的Rules RulesBase和触发规则创建WorkingMemory,如下所示:
WorkingMemory workingmemory = rulebase.newWorkingMemory();
workingmemory.fireAllRules();
Run Code Online (Sandbox Code Playgroud)
与
使用会话(有状态。无状态)来触发规则,如图所示
KnowledgeBase knowledgebase = createKnowledgeBase();
StatefulKnowledgeSession session = knowledgebase.newStatefulKnowledgeSession();
session.insert(Object);
session.fireRules();
Run Code Online (Sandbox Code Playgroud)