2014-01-06 160 views
2

我在我的本地安装Tomcat 7.0和NetBeans IDE 7.4, 我创建一个JSF 2.2 Web应用程序,在这个项目中我创建一个Web服务名称ChargingGateway有一个WebMethod这样的:连接部署在tomcat上的Web服务时出错?

@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; 

} 

使用用于记录来自另一个API的用户信息&响应信息。 构建并部署OK =>在构建项目之后获得了war文件:“构建jar:D:\ Setup \ Java \ RDB_JSF \ dist \ RDB_JSF.war”。

我按照这个教程: 部署和测试Web服务

在部署Web服务的服务器,你可以使用IDE打开服务器的测试客户端,如果服务器有一个测试客户端。 GlassFish和WebLogic服务器提供测试客户端。

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.** 

在此链接:https://netbeans.org/kb/docs/websvc/jax-ws.html#Exercise_1 所以我改变这是我的服务的名称相对URL字段/ ChargingGateway。然后我运行该项目并浏览到“localhost:8080/RDB_JSF/ChargingGateway”,我得到了“HTTP Status 404 -/RDB_JSF/ChargingGateway”错误。

请帮我在Tomcat上部署Web服务。

+0

当您尝试使用localhost时:8080/RDB_JSF/ChargingGateway/LoginAndCharging? – jsjunkie

+0

相同的错误:HTTP状态404 -/RDB_JSF/ChargingGateway/LoginAndCharging 类型状态报告 消息/ RDB_JSF/ChargingGateway/LoginAndCharging 描述所请求的资源不可用。 – user3164173

回答

2

Java EE项目需要GlassFish Server或Oracle WebLogic Server 12c。 捆绑的Tomcat Web服务器不是完全兼容Java EE的Web服务器。但是,可以将Tomcat 7.x Web服务器配置为支持某些Java EE功能。有关如何将Java EE支持添加到tomcat的信息,请参阅Apache TomEE项目(http://openejb.apache.org/)。

+0

谢谢,我会尽力的。 – user3164173