Võ Văn Hải's blog

Chỉ có một điều tuyệt đối đó là mọi thứ đều tương đối…

33 Responses to “Java Web services”

  1. Hqtin32 said

    Em dang tao mot web service bang Eclipse doc tap tin van ban (.txt su dung UTF-8). Nhung khi doc noi dung file vao buff thi bi ma hoa tieng Viet (Vi du: khoản 5; điểm a, điểm b, điểm d, điểm e, điểm g khoản 6;). Anh co cach nao gu\iup em khac phuc loi nay khong?. Em chan thanh cam on

  2. vovanhai said

    Khi bạn dùng đối tượng java.util.Scanner bạn phải chỉ định charset mà nó sẽ đọc. Ví dụ trong trường hợp của bạn sẽ phải định nghĩa Scanner như sau:

    java.util.Scanner sc=new java.util.Scanner(new java.io.FileInputStream(“file_path”,”UTF-8″);
    //do your work after

  3. Hqtin32 said

    Em có viết một đoạn chương trình để text như sau:

    public String text(){
    StringBuilder tam=new StringBuilder(“”);
    try {
    FileOutputStream out=new FileOutputStream(“D:\\text.txt”);
    //ten tap tin output;
    PrintWriter output=new PrintWriter(out,true);
    FileInputStream is=new FileInputStream(“C:\\Tukhoa.txt”);
    //tap tin input
    Scanner input=new Scanner(is,”UTF-8″);
    while(input.hasNextLine())
    {
    String line=input.nextLine();
    tam.append(line);
    tam.append(“\n”);
    }
    is.close();
    input.close();

    output.println(tam.toString());
    out.close();
    output.close();
    }
    catch (Exception e)
    {
    System.err.println(“Error: ” + e.getMessage());
    }
    return tam.toString();
    }

    Kết quả trả về trong phần Result của web service text client là:”Cảnh cáo, phạt tiền , tiền từ, đến, đồng đối, Phạt tiền , đồng”(không bị lỗi UTF-8). tuy nhiên kết quả trong tập tin lai bị lỗi:”C?nh cáo,ph?t ti?n ,ti?n t?,??n,??ng ??i,Ph?t ti?n ,??ng”.
    Khi em chạy chương trình dưới dạng một ứng dụng bình thường thì việc truy xuất file bình thường không bị lỗi nhưng khi chuyễn qua web service thi lai gặp lỗi font như trên. Nếu có thể xin anh giúp dùng em chân thành cảm ơn!.

  4. Hqtin32 said

    Em tim ra roi thi ra no chi don gian nhu the nay:
    BufferedWriter f = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(“fileoutput.txt”),”UTF8″))
    f,write(String output);

  5. vicki said

    Thầy có thể cho em một ví dụ về cách sử dụng Service có Authentication được không ạ.
    Cảm ơn thầy!

  6. vicki said

    Thầy cho em hỏi một câu được không?

    Em có một vấn đề đặt ra thế này: Giả sử em có một webservice rồi và có một URL để cung cấp cho một nhóm người nào đó sử dụng. Bây giờ em muốn rằng những người đó khi xử dụng dịch vụ thì phải trải qua một bước đăng nhập, có nghĩa là: họ có URL đó nhưng khi chưa đăng nhập (server chưa xác thực) thì họ chưa thể nhìn thấy các phương thức trong file WSDL được.
    Theo thầy vấn đề này phải làm như thế nào?
    mong thầy có thể giải đáp cho em
    Chúc thầy khỏe mạnh và thành công!

  7. vovanhai said

    Trong câu hỏi của bạn đã có giải pháp rồi!
    Hôm nào có thời gian tôi sẽ viết 1 bài về secure với webservice. Chờ nhé!

  8. duoichon said

    Xin chào mọi người! Làm ơn chi giúp mình cách làm sao để mỗi khi client gởi yêu cầu thi web services sẽ gởi 1 file xml cho client (tức là client download file từ web services)

  9. Sử dụng Webservices bất đồng bộ said

    Hi,
    Mọi người chỉ giáo cách sử dụng webservices bất đồng bộ trong java nhé.
    Thanks!

  10. HAI said

    Em chào thầy!
    Em đang găp phải 1 vân đê như thê này. Em đang thiêt kê 1 ud dung web service tại server em có lâý ra đươc 1 HashMap
    nhưng o client thi no khong nhan duoc gia tri cua HashMap đây vây thây co cach nao xu ly điêu nay ko a.
    Em cam on thay

  11. Võ Văn Hải said

    Map không implements Serializable nên không thể truyền qua mạng được. Em phải dùng cách khác thôi.

  12. Tran Chinh said

    Chào thầy Hải.
    em đã tham khảo nhiều tài liệu và ví dụ về webservice và cũng đã làm được webservice chạy ngon lành.
    Nhưng có điều này ko rõ là: khi Eclipse tạo ra webservice có tên của service, PortType, element, . . . nhưng có cả 3 binding.
    1 cái theo giao thức HTTP
    1 cái theo giao thức SOAP11
    1 cái SOAP12
    thầy có thể giải thích cho em biết là webservice nó sử dụng giao thức nào hay là sử dụng cả 3 thức để làm việc được ko ạ?
    vì trong các ví dụ trên mạng thì khi add vào webservice (file wsdl đã tạo sẳn) thì trong webservice đó chỉ có 1 giao thức là SOAP thui ạ.
    em đã cố gắng dùng tool wsdl2java trong axis2 plugin Eclipse để tạo file wsdl nhưng ko thành công mặc dù đã tham khảo rất nhiều bài hướng dẫn nên em đã tạo file wsdl bằng cách tạo webservice trong eclipse đến khi file wsdl deploy lên server tomcat thì em copy code xml trong trong làm thành file wsdl luôn và kiểm tra lại thì phát hiện trong file wsdl đó có cả 3 binding như trên trong khi đó file wsdl mà em tải trên mạng về thì 1 service chỉ có 1 binding đến 1 porttype mà thui.
    Mong thầy chỉ giúp.

  13. Võ Văn Hải said

    Thường khi ta dùng tool để tạo WS thì nó phát sinh ra code/config hỗ trợ cho các loại binding khác nhau. Điều này có cái lợi là clint có thể dùng cách nào cũng được.

  14. Tran Chinh said

    Dạ cái này thì em đã biết vì client connect được và sử dụng rất tốt nhưng em muốn biết thêm về cách thức hoạt động của nó. Tức là trong 3 cái binding đó thì client sử dụng hết hay chỉ sử dụng 1 binding là đủ ạ? em thử bỏ 2 cái chỉ để lại 1 binding theo giao thức SOAP11 thì nó ko coonect được thầy ơi. Thầy có thể test giúp em cái này được ko ạ? Cảm ơn thầy nhiều

  15. Tran Chinh said

    Thầy Hải ơi cho em hỏi cái.
    em đang làm webservice trên Bpel plugin Eclipse J2EE
    em muốn truyền cho biến Input của Bpel là 1 ResultSet và trả về biến Output cũng là ResultSet thì em phải làm sao ạ?
    Mong thầy giúp em.

  16. Võ Văn Hải said

    Nên chuyển ResultSet thành 1 collection nào đó rồi chuyển.

  17. Tran Chinh said

    Thầy Hải ơi thầy làm ơn chỉ giúp em cách tạo kiểu dữ liệu “tự tạo” trong Eclipse được không ạ?
    vì khi em chọn New Type thì cũng chỉ chọ 1 trong các kiểu dữ liệu cơ bản không hà, em muốn tạo ra 1 kiểu cấu trúc dữ liệu để có thể lưu trữ 1 row trong csdl thầy à, nhưng em potay rùi. Mong thầy giúp đỡ!

  18. Võ Văn Hải said

    “Thầy Hải ơi thầy làm ơn chỉ giúp em cách tạo kiểu dữ liệu “tự tạo” trong Eclipse được không ạ?
    vì khi em chọn New Type thì cũng chỉ chọ 1 trong các kiểu dữ liệu cơ bản không hà, em muốn tạo ra 1 kiểu cấu trúc dữ liệu để có thể lưu trữ 1 row trong csdl”

    Một class trong java chính là kiểu dữ liệu “tự tạo” theo em nghĩ đó.
    Chẳng hạn bảng Sinhvien(ms,hoten,diachi) trong cơ sở dữ liệu thì gần như tương ứng 1 lớp dạng như sau:

    class Sinhvien{
    private String ms;
    private String hoten;
    private String diachi;
    //các hàm setter/getters, constructors, hashCode/equals,...
    }
    
  19. Tran Chinh said

    Em xin cảm ơn thầy rất nhiều!
    Giả sử ta có 1 database QLSV có 1 table sinhvien(mssv,holot,ten,nsinh,quequan)
    đầu vào của qui trình BPEL là mssv và đầu ra là thông tin của sinh viên thì phải làm sao hả thầy. Mong thầy chỉ giúp.
    em muốn dữ liệu đầu ra mình có thể truy xuất từng thuộc tính được chứ ko phải là 1 chuỗi (mà là dạng record) hiện tại em chưa làm được xin thầy giúp em nhe!!!

  20. Võ Văn Hải said

    Thì em tạo 1 đối tượng serialize mà chuyển. Ví dụ cái bảng sv của em thì em tạo 1 class như sau

    class Sinhvien implements Serializable{
    private String mssv;
    private String holot;
    private String ten;
    private Date ngaysinh;
    private String quequan;
    //..............
    }
     

    Sau đó em viết 1 service với giá trị trả về là 1 sinhvien này.
    Chúc vui!

  21. Doinv said

    Hi Thay,Thay vui long cho em hoi, em dang gap van de nhu sau: em dung mot link WS cua mot partner de call gui content qua ben do, nhung moi lan call chiem CPU rat nhieu, vay minh co cach nao giam CPU khi call nhu vay khong thay.

    Thanks Thay a.

  22. a oi! e lam de tai nay na! Ứng dụng websrvice phục vụ tra cứu tên chủ nhân số điện thoại, số cmnd lưu trong acess hay SQL nhung e ko bit ket noi co so du lieu a chi e duoc ko said

    a oi! e lam de tai nay na! Ứng dụng websrvice phục vụ tra cứu tên chủ nhân số điện thoại, số cmnd lưu trong acess hay SQL nhung e ko bit ket noi co so du lieu a chi e duoc ko

  23. Tran Chinh said

    em đã tạo ra lớp sinhvien như thế này

    package test;

    import java.sql.Date;
    import java.io.*;

    class sinhvien implements Serializable
    {
    private String masv;
    private String hosv;
    private String tensv;
    private Date ngaysinh;
    private String quequan;
    private String malop;
    public void setMasv(String masv) {
    this.masv = masv;
    }
    public String getMasv() {
    return this.masv;
    }
    public void setHosv(String hosv) {
    this.hosv = hosv;
    }
    public String getHosv() {
    return this.hosv;
    }
    public void setTensv(String tensv) {
    this.tensv = tensv;
    }
    public String getTensv() {
    return this.tensv;
    }
    public void setNgaysinh(Date ngaysinh) {
    this.ngaysinh = ngaysinh;
    }
    public Date getNgaysinh() {
    return this.ngaysinh;
    }
    public void setQuequan(String quequan) {
    this.quequan = quequan;
    }
    public String getQuequan() {
    return this.quequan;
    }
    public void setMalop(String malop) {
    this.malop = malop;
    }
    public String getMalop() {
    return this.malop;
    }
    }

    sau đó tạo webservice

    package test;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import test.sinhvien;

    public class Data_Test
    {
    public sinhvien ThongtinSV(String masv)
    {
    Connection conn = null;
    Statement stm = null;
    ResultSet rs = null;
    String DB_url = “jdbc:mysql://127.0.0.1:3306/qlsv”;
    sinhvien kq = null;
    String sql = “select * from sinhvien where masv='” + masv + “‘”;

    try
    {
    Class.forName (“com.mysql.jdbc.Driver”).newInstance ();
    conn = DriverManager.getConnection (DB_url,”root”,”1010673″);
    stm = conn.createStatement();
    rs = stm.executeQuery(sql);

    if(rs.next())
    {
    kq.setMasv(rs.getString(“masv”).trim());
    kq.setHosv(rs.getString(“hosv”).trim());
    kq.setTensv(rs.getString(“tensv”).trim());
    kq.setNgaysinh(rs.getDate(“ngaysinh”));
    kq.setQuequan(rs.getString(“quequan”).trim());
    kq.setMalop(rs.getString(“malop”).trim());
    }
    conn.close();
    }catch(Exception ex)
    {
    ex.printStackTrace();
    }
    return kq;
    }

    }

    rùi tiếp tục tạo webservice client nó cho ra 2 lớp mới
    Data_TestCallbackHandler
    Data_TestStub

    sau đó tạo trang index.jsp như sau

    Hello

    hello

    nhưng kết quả chỉ trả về chữ Hello mà ko truy xuất được các thông tin trong biến sv
    thầy xem giúp em với
    cảm ơn thầy.

  24. Tran Chinh said

    Chào thầy và các bạn!
    làm ơn chỉ giúp em cái này: khi em lấy dữ liệu từ csdl MySQL bằng java và chứa trong biến rs.
    em muốn lấy giá trị trong từng trường đưa vào một biến khác (kq) và các giá trị dữ liệu này phân cách nhau bởi dấu ;
    thì em phải làm sao ajk?????
    Mong chỉ giúp.

  25. ha said

    thầy ơi, thầy giúp e với, bay giờ e đã xây dựng 1 web service voi Axis2, e viết 1 ứng dụng trên 1 paltform khác (mobile) là client, ở client e đăng nhập user name, pass. Sau do send user va pass len service, vậy có cách nào đê trên service mình quản lí user-role ko thầy, mình khai bao annotation j đó để dựa vào cái user ma no tự động tìm được role rồi trả về role dạng string. E thấy giống Spring security do thay

  26. Mai said

    thầy có thể giải thix dùm em và fix lổi này dc ko ạ?
    +HIERARCHY_REQUEST_ERR: An attempt was made to insert a node where it is not permitted.

    +An error was discovered processing the

  27. Võ Văn Hải said

    Lỗi HIERARCHY_REQUEST_ERR: An attempt was made to insert a node where it is not permitted.” xem ở đây

  28. Nguyen Le said

    Xin chào các anh chị, hiện tôi đang làm 1 bài tập, mong được các anh chị chỉ giáo.
    Tôi tạo webservice với Apache Axis. Tôi đang muốn truy xuất nguồn dữ liệu từ WS này bằng ksoap2 nhưng chưa thực hiện được. Có anh chị nào có kinh nghiệm trong vấn đề trên thì giúp tôi với

  29. Võ Văn Hải said

    “Tôi tạo webservice với Apache Axis. Tôi đang muốn truy xuất nguồn dữ liệu từ WS này bằng ksoap2…”
    Bạn tham khảo ở đây nhé:
    http://vietshare.vn/495/71/Goi-Webservice-viet-bang-net-bang-Ksoap2Android.aspx

  30. La said

    hi chao thay. Thay co co giup e e giai phat de serialize exception de tra ve browser dang xml duoc ah.

  31. ngahd said

    chao thay !
    Em ten la nga , hien em dang hoc mon cong nghe XML , va Java , va em dinh lam 1 webservice de van dung XML va Java , thay co the huong dan
    cho em cac buoc can thiet de tao nen 1 webservice duoc khong ak .
    Em da tung lam qua php roi , nhung ve webservice em van con mo ho , chua dinh huong duoc .
    Mong thay giup do .

  32. Lê Xuân nguyên said

    Bạn dùng thư viện Apache Axis2 để tạo Web Service đi, thấy thầy Hải có tut về phần đó rồi mà

  33. […] Web-service: 1 2 3 […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: