【发布时间】:2012-01-18 07:14:17
【问题描述】:
我正在尝试编写一个简单的 web 服务,它将获取参数并返回三个不同的参数。
我可以通过以下代码实现这一点。但问题是 setter 方法也包含在 Web 服务中。例如,我想保护“setTransactionID”被排除在 web 服务方法中。如何修改代码?
package OKS;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
public class CheckCredit {
@WebMethod
public Result GetResult(@WebParam(name="username") String username,@WebParam(name="password") String password) {
Result res= new Result();
if ((username!=null)&&(password!=null)) {
if ((username.equals("xyz"))&&(password.equals("123"))) {
res.setResultType(1);
res.setTransactionID("tr12128");
res.setCredit(1220);
} else {
res.setResultType(0);
res.setTransactionID("cr12128");
res.setCredit(0);
}
} else {
res.setResultType(0);
res.setTransactionID("er12128");
res.setCredit(0);
}
return res;
}
}
结果类
package OKS;
public class Result {
int resultType;
String TransactionID;
int Credit;
public void setResultType(int resultType) {
this.resultType = resultType;
}
public void setTransactionID(String transactionID) {
TransactionID = transactionID;
}
public void setCredit(int credit) {
Credit = credit;
}
public int getResultType() {
return resultType;
}
public String getTransactionID() {
return TransactionID;
}
public int getCredit() {
return Credit;
}
}
此服务编译并运行良好。但它也包括WebService中的setter方法。 如何排除 setter 方法?
【问题讨论】:
-
您能否简单地将 setTransactionID() 重命名为 setTransactionID_please_dont_export_that_method() 之类的名称,或者更简洁的名称?
-
或者可以简单地将 setTransactionID() 包私有化?
-
啊,我想我认为您并不真正关心界面,而是关心安全性,对吧?在这种情况下,您可能应该研究有状态的 bean:jax-ws.java.net/nonav/2.2.5/docs/statefulWebservice.html 不可能像您现在尝试的那样保护小块纯文本 XML 数据。
标签: java web-services annotations glassfish jax-ws