![](/img/trans.png)
[英]How to read data from PTC Windchill Info Engine using Java?
[英]How to specify credentials from a Java Web Service in PTC Windchill PDMLink
我目前正在研究使用Java Web Service(如Windchill的Info * Engine文檔所述)以檢索有關零件的信息的可能性。 我正在使用Windchill版本10.1。
我已經成功部署了一個Web服務,該服務在.Net應用程序中使用。 不嘗試訪問Windchill信息的呼叫成功完成。 但是,當嘗試檢索零件信息時,出現了wt.method.AuthenticationException。
這是在webService中運行的代碼(Web服務方法僅調用此方法)
public static String GetOnePart(String partNumber) throws WTException
{
WTPart part=null;
RemoteMethodServer server = RemoteMethodServer.getDefault();
server.setUserName("theUsername");
server.setPassword("thePassword");
try {
QuerySpec qspec= new QuerySpec(WTPart.class);
qspec.appendWhere(new SearchCondition(WTPart.class,WTPart.NUMBER,SearchCondition.LIKE,partNumber),new int[]{0,1});
// This fails.
QueryResult qr=PersistenceHelper.manager.find((StatementSpec)qspec);
while(qr.hasMoreElements())
{
part=(WTPart) qr.nextElement();
partName = part.getName();
}
} catch (AuthenticationException e) {
// Exception caught here.
partName = e.toString();
}
return partName;
}
此代碼可在服務器上部署的命令行應用程序中工作,但在Web服務中執行此操作時將失敗,並出現wt.method.AuthenticationException。 我覺得它失敗了,因為Web服務在MethodServer中,所以我不應該使用RemoteMethodServer。
無論如何,如果有人知道如何做到這一點,那就太好了。 一個額外的問題是如何從Web服務中進行日志記錄,以及如何配置此日志記錄。
謝謝。
您無需使用此代碼在服務器端進行身份驗證
RemoteMethodServer server = RemoteMethodServer.getDefault();
server.setUserName("theUsername");
server.setPassword("thePassword");
如果您遵循了文檔(windchill幫助中心),則您的Web服務應使用@WebServices和@WebMethod(operationName =“ getOnePart”)進行注釋,並繼承com.ptc.jws.servlet.JaxWsService
另外,您還必須注意部署期間使用的策略。 默認的ant腳本配置有
security.policy=userNameAuthSymmetricKeys
因此,當您使用.Net消耗ws時,需要對其進行管理。
對於事件記錄,您只需要調用默認情況下用$log.debug("Hello")
實例化的log4j記錄器$log.debug("Hello")
您無法預先驗證服務器端。
您可以將身份驗證寫入客戶端。 不確定什么是.Net等價物,但這適用於Java客戶端:
private static final String USERNAME = "admin";
private static final String PASSWORD = "password";
static {
java.net.Authenticator.setDefault(new java.net.Authenticator() {
@Override
protected java.net.PasswordAuthentication getPasswordAuthentication() {
return new java.net.PasswordAuthentication(USERNAME, PASSWORD.toCharArray());
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.