2
votes

I have install Tomcat 7.0 and Netbeans IDE 7.4 in my localhost, I create an JSF 2.2 web app, in this project i create an web service name ChargingGateway have a WebMethod like this:

@WebMethod(operationName = "LoginandCharging")
    public String LoginandCharging(@WebParam(name = "usernameVMG") String txtusernameVMG,@WebParam(name = "passwordVMG") String txtpasswordVMG,@WebParam(name = "servicename") String txtservicename, @WebParam(name = "serial") String txtserial, @WebParam(name = "pin") String txtpin, @WebParam(name = "cardtype") String txtcardtype) throws JSONException, Exception {
    //login
     String output="";
     int ID=-1;
     boolean loginOK =false;
     Connection conn1=DBUlti.DBConnect.getConnectionVMG();
     UserDAL dal = new UserDAL(conn1);
      VMGLog log1= new VMGLog();
    log1.WriteLog(txtusernameVMG+","+txtpasswordVMG+","+txtserial+","+txtpin+","+txtservicename+","+txtcardtype);

   ResultSet rs = dal.LoginVMG(txtusernameVMG, txtpasswordVMG);

   if(rs.next()){
       log1.WriteLog("login success");
       UserEntityVMG entity = new UserEntityVMG();
         entity.setID(rs.getInt("ID"));
         ID=rs.getInt("ID");
        entity.setUsername(rs.getString("Username"));
        entity.setPassword(rs.getString("Password"));
        entity.setMsisdn(rs.getString("msisdn"));
        entity.setEmail(rs.getString("email"));
        entity.setRegister_date(rs.getDate("register_date"));
        entity.setIsBanned(rs.getBoolean("isBanned"));
        entity.setRoll(rs.getInt("Roll")); 
        loginOK=true;
   } 
     if(loginOK==true){
          StringBuilder data = new StringBuilder(); 
    String cardtype = "";
    int minlengthOfPin = 0;
    int maxlengthOfPin = 0;
    int minlengOfSerial = 0;
    int maxlengOfSerial = 0;
    boolean isSendserial = true;
    boolean isSendcardtype=true;
    //servicename:fpt,epay,vtc
    log1.WriteLog("login=true");
    String servicename = txtservicename;
      log1.WriteLog(servicename);
    if (servicename.equalsIgnoreCase("EPAY")) {
        String temp = txtcardtype;
        if (temp.equalsIgnoreCase("VNP")) {
            minlengthOfPin = 12;
            maxlengthOfPin = 15;
            minlengOfSerial = 9;
            maxlengOfSerial = 9;
        } else if (temp.equalsIgnoreCase("VMS")) {
            minlengthOfPin = 12;
            maxlengthOfPin = 14;
            minlengOfSerial = 9;
            maxlengOfSerial = 15;
        } else if (temp.equalsIgnoreCase("VTT")) {
            minlengthOfPin = 13;
            maxlengthOfPin = 15;
            minlengOfSerial = 11;
            maxlengOfSerial = 15;
        } else if (temp.equalsIgnoreCase("MGC")) {
            minlengthOfPin = 12;
            maxlengthOfPin = 12;
            minlengOfSerial = 12;
            maxlengOfSerial = 12;
            isSendserial = false;
        }
        cardtype = temp;
    }
    else if (servicename.equalsIgnoreCase("FPT")) {
        cardtype = "FPT";
        minlengthOfPin = 10;
        maxlengthOfPin = 10;
        minlengOfSerial = 10;
        maxlengOfSerial = 10;
    }
    else if (servicename.equalsIgnoreCase("VTC")) {
        cardtype = "VTC";
        minlengthOfPin = 12;
        maxlengthOfPin = 12;
        minlengOfSerial = 12;
        maxlengOfSerial = 12;
    }
 if(cardtype.length()<=0){
     isSendcardtype=false;
 }
 log1.WriteLog("Sname:"+servicename);
    data.append(servicename);
    log1.WriteLog("user"+Bussiness.user);
    data.append(Bussiness.user);
    log1.WriteLog("txtserial"+txtserial);
    if(isSendserial==true){
    data.append(txtserial);
    }
    log1.WriteLog("pin"+txtpin);
    log1.WriteLog("cardtype:"+cardtype);
    data.append(txtpin);
    if(isSendcardtype==true){
    data.append(cardtype);
    }
    log1.WriteLog("subcpid"+Bussiness.subcpid);
    data.append(Bussiness.subcpid);

   String mac = des.DESMAC(data.toString(), EpurseConfig.keyUI, "DESede");
   log1.WriteLog("Mac="+mac+",data="+data.toString());
   String username = Bussiness.user;

    String serial = "";
    System.out.println("serial length:" + txtserial.length());
    if (txtserial.length() >= minlengOfSerial && txtserial.length() <= maxlengOfSerial) {
        serial = des.Encrypt(txtserial, EpurseConfig.keyUI, "DESede");
    }
    else output="";

    String pin = "";
    System.out.println("pin length:" + txtpin.length());
    if (txtpin.length() >= minlengthOfPin && txtpin.length() <= maxlengthOfPin) {
        pin = des.Encrypt(txtpin, EpurseConfig.keyUI, "DESede");
    }
    else output="";
   String subcp = Bussiness.subcpid;
    log1.WriteLog("Bat dau day JSON");
    JSONObject json = new JSONObject();
    json.put("servicename", servicename);
    json.put("username", username);
    if(serial.length()>0){
    json.put("serial", serial);
    }
    json.put("pin", pin);
     if(cardtype.length()>0){
    json.put("cardtype", cardtype);
     }
    json.put("subcp", subcp);
    json.put("mac", mac);
     log1.WriteLog("BGoi webservice");
    String response = new ServiceCardProxy(endpoint).gateCardInput(json.toString());
     log1.WriteLog("Response="+response);
    JSONObject jsonResponse = (JSONObject) new JSONParser().parse(response);
            String Flag=jsonResponse.get("flag").toString();
            String Description=jsonResponse.get("description").toString();
             String cardAmount=jsonResponse.get("cardAmount").toString();
              String cardID=jsonResponse.get("cardID").toString();

         ChargingDAL dalCharge= new ChargingDAL(conn1);

         int InsertData=dalCharge.ChargeVMG(ID,servicename,serial, pin, cardtype, Flag,Description,cardAmount,cardID);

     output= response;
      }                
    return output;

}

use for logging user information & response info from another API. I build and deployed OK => got the war file after building project: "Building jar: D:\Setup\Java\RDB_JSF\dist\RDB_JSF.war".

I follow this tutorial: Deploying and Testing the Web Service

After you deploy a web service to a server, you can use the IDE to open the server's test client, if the server has a test client. The GlassFish and WebLogic servers provide test clients.

If you are using the Tomcat Web Server, there is no test client. **You can only run the project and see if the Tomcat Web Services page opens. In this case, before you run the project, you need to make the web service the entry point to your application. To make the web service the entry point to your application, right-click the CalculatorWSApplication project node and choose Properties. Open the Run properties and type /CalculatorWS in the Relative URL field. Click OK. To run the project, right-click the project node again and select Run.**

at this link :https://netbeans.org/kb/docs/websvc/jax-ws.html#Exercise_1 so I change the Relative URL field to /ChargingGateway which is my service name. Then I run the project and browse to "localhost:8080/RDB_JSF/ChargingGateway", I got "HTTP Status 404 - /RDB_JSF/ChargingGateway" error.

Please help me on deploying web services on Tomcat.

1
whatdo you get when you try localhost:8080/RDB_JSF/ChargingGateway/LoginAndCharging ?? - jsjunkie
The same error:HTTP Status 404 - /RDB_JSF/ChargingGateway/LoginAndCharging type Status report message /RDB_JSF/ChargingGateway/LoginAndCharging description The requested resource is not available. - user3164173

1 Answers

2
votes

Java EE projects require GlassFish Server or Oracle WebLogic Server 12c. The bundled Tomcat web server is not a fully Java EE-compliant web server. However, the Tomcat 7.x web server can be configured to support some Java EE functionality. See the Apache TomEE project(http://openejb.apache.org/) for information on how to add support for Java EE to tomcat.