小编Paw*_*wan的帖子

创建后台用于发送电子邮件的线程

我需要在注册过程中发送一封电子邮件,因此我正在使用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)

java multithreading

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

play()请求被新的加载请求中断

我有一个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)

在下面的小提琴中重现问题的步骤

  1. 上传任何mp4视频
  2. 单击"删除"链接
  3. 重复步骤1

在服务器控制台我得到

VM79:56Uncaught(在promise中)DOMException:play()请求被新的加载请求中断.

这是我的小提琴

https://jsfiddle.net/q3hhk17e/30/

你能告诉我如何解决这个问题吗?

jquery

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

封闭范围中定义的局部变量计数必须是最终的或有效地最终

我正在尝试使用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)

java

2
推荐指数
2
解决办法
2706
查看次数

修改代码以防止SQL注入

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注入

jdbc

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

Maven:错误的本地POM和版本问题

我有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)

请指导我这是否是正确的方法,因为当我这样做时,错误仍然存​​在.

谢谢 .

maven-2

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

Java代码PMD抱怨,因为Method应该只有一个退出点

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是什么?

请分享您的经验.

java performance pmd

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

在Linux脚本中设置classPath

我用这种方式编写了一个简单的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)

正如您可以观察到的,这两个脚本之间的唯一区别在于,在下面的脚本到类路径中,我不包括当前目录路径(.)

请让我知道,为什么这不会这样?

linux

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

java:Inside Enhanced for循环不能Object to String

我从网上拿了这个例子.但是,当我尝试它不是编译说不能将对象转换为字符串

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().但是如何在增强的循环中做到?

java

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

Liferay:我们可以使用Liferay Hooks来修改Liferay登录前后事件

我正在使用Liferay 6.

我已经读过Liferay Hooks可以用来修改JSP,属性文件,模型监听器,系统事件,而不用触及Liferay代码.

所以我的问题是,我可以使用Liferay Hooks来修改Liferay登录前后事件吗?

请明确说明 .

谢谢 .

liferay liferay-6

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

Drools:使用Session与WorkingMemory触发规则

这两者在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)

rule-engine drools

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