MySQL docker容器查询返回null到刚刚插入的值

时间:2017-03-08 14:40:07

标签: javascript mysql webrtc

我使用两个容器创建了一个web应用程序:tomcat,托管web-app和mysql(来自官方mysql映像)for db。好吧,我必须在db中插入一个WebRTC SDP的特定属性(a =指纹线);

Here有一个WebRTC SDP的例子:我已经解析了它并恢复了" a =指纹"线。

我已经使用这个javascript函数对其进行了解析,其中我删除了初始" a =指纹:"行的字符串和尾随空格。

function FindFingerprint(jsep) {
  var lines = jsep.sdp.split("\n");
  var line = -1;
  for (var i = 0; i < lines.length; i++) {
    if (lines[i].indexOf("a=fingerprint") === 0) {
      line = i;

      fingerprint_to_send = lines[i].replace(/a=fingerprint:/,"");
      finge= fingerprint_to_send.replace(/\s+$/, '');
      return finge;
    }
  }
  if (line === -1) {
    console.debug("Could not find the a=fingeprint line for", media);
    return;
  }
}

然后我用这个servlet存储到DB中。

这是在mysql中插入该行的servlet代码:

    if (action.equals("InsertSDPLine")) {

        HttpSession session1= request.getSession();
    //  String username = (String) session1.getAttribute("username");
    //  String password = (String) session1.getAttribute("password");

    //  Utente ut= um.loginUsername(username);

        Long user_id = (Long) session1.getAttribute("user_id");
//      Utente ut = um.login(username, password);
        Utente ut = um.loginByID(user_id);
        Long u_id = ut.getId();

        SessionFactory sf = HibernateUtil.createSessionFactory();
        Session session = sf.openSession();
        session.beginTransaction();


        SDPLines sdp = new SDPLines(request.getParameter("sdpline"));

        sdp.setUtente(ut);

        session.save(sdp);

        session.getTransaction().commit();
        session.close();

    }

使用SDPLines实体:

package entities;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;


@Entity
@Table(name = "sdplines", catalog = "shine4")
public class SDPLines implements java.io.Serializable {

    @Id
    @GeneratedValue
    private int id;

    @Column(name="value")
    private String value;

    @ManyToOne
    @JoinColumn(name="u_id")
    private Utente utente;

    public SDPLines() {

        }


    public SDPLines(String value) {

        this.value=value;

    }


    public String getValue() {
        return value;
    }


    public void setValue(String value) {
        this.value = value;
    }


    public Utente getUtente() {
        return utente;
    }


    public void setUtente(Utente utente) {
        this.utente = utente;
    }


}

我使用Hibernate。

我注意到我要插入的值是103个字符。

如果您知道WebRTC的性​​质,则会有第二个通信对等体:我想从DB检查插入的行,并将其值与他看到的(他的)RemoteSDP的a =指纹值进行比较。

问题如下:如果我尝试从数据库中选择我刚刚插入的行(103个字符),我没有从查询返回的行!

我试过用我写的一些测试字符串和所有作品。

你能解释一下为什么会出现这个问题吗?

这是一个servlet代码,用于控制HTTP请求中的值是否等于db中与THAT用户相关的现有值。

UtenteModel um= new UtenteModel();
SDPLineModel sdpmodel= new SDPLineModel();


 if (action.equals("CheckFingerprint")) {


                String fingerprint = (String) request.getParameter("fingerprint");


                HttpSession session1= request.getSession();
                Long user_id = (Long) session1.getAttribute("user_id");

                Utente ut = um.loginByID(user_id);

                SDPLines sdpline = sdpmodel.findFingerprintNew(fingerprint, user_id);

                if (sdpline == null) {

                    String message = "NOT_VALID";
                    System.out.println("Fingerprint NON trovata! ");
                    response.getOutputStream().print(message);
                    response.getOutputStream().flush();
                    response.getOutputStream().close();

                }
                else {

                    String message = "VALID";
                    System.out.println("Fingerprint trovata! ");
                    response.getOutputStream().print(message);

                    response.getOutputStream().flush();
                    response.getOutputStream().close();
                }
            }

简而言之,我在db中插入此值,并在检查此值是否存在后立即与该用户相关,但是servlet设置了NOT_VALID响应!

[编辑]我已经注意到,如果我在&#34;几次&#34;之后检查插入值的db中的存在,它会返回我所需行的有效存在。

为什么要延迟?以及如何解决这个问题,因为我想在WebRTC信令路径中执行这个控制?

0 个答案:

没有答案