数字签名无效的异常,请教各位,急!
最近打算基于原BEA的aqualogic server registry做一个简单客户端的开发,实现服务发布、查询功能,但是在保存商业实体总报错(错误信息如下);我使用的是用户名/密码进行身份验证,感觉像是数字签名无效的异常,请教各位,急!解决了要多少分给多少分
部署环境:windows 2003 server;weblogic 服务器9.2;开发环境:myEclipse6.01;用的安全策略是weblogic.policy
程序源代码:
package com.nercita.registry.publication;
import com.nercita.registry.common.DemoProperties;
import com.nercita.registry.common.SystinetDemo;
import com.nercita.registry.common.UserInput;
import com.nercita.registry.common.DemoHeader;
import org.systinet.uddi.InvalidParameterException;
import org.systinet.uddi.client.v3.UDDIException;
import org.systinet.uddi.client.v3.UDDIPublishStub;
import org.systinet.uddi.client.v3.UDDISecurityStub;
import org.systinet.uddi.client.v3.UDDI_Publication_PortType;
import org.systinet.uddi.client.v3.UDDI_Security_PortType;
import org.systinet.uddi.client.v3.struct.AuthToken;
import org.systinet.uddi.client.v3.struct.Get_authToken;
import org.systinet.uddi.client.v3.struct.BusinessDetail;
import org.systinet.uddi.client.v3.struct.BusinessEntityArrayList;
import org.systinet.uddi.client.v3.struct.BusinessEntity;
import org.systinet.uddi.client.v3.struct.Discard_authToken;
import org.systinet.uddi.client.v3.struct.Save_business;
import org.systinet.uddi.client.v3.struct.Description;
import org.systinet.uddi.client.v3.struct.Name;
import javax.xml.soap.SOAPException;
import java.util.Iterator;
/**
* This demo shows, how to use Systinet's java API to UDDI v3 call save_business.
* For more information about this call, consult with UDDI v3 specification.
*/
public class SaveBusiness implements SystinetDemo {
public static final String URL_PUBLISHING = "uddi.demos.url.publishing";
public static final String URL_SECURITY = "uddi.demos.url.security";
public static final String USER_JOHN_NAME = "uddi.demos.user.john.name";
public static final String USER_JOHN_PASSWORD = "uddi.demos.user.john.password";
/**
* Creates and fills the Save_business structure.
* @param businessKey key, for which the user owns keyGenerator, null for server-assigned key.
* @param names array of names of Business entity to be saved.
* @param nameLangCodes array of language codes
* @param description its description
* @param authInfo Secret string
* @return Object, which represents Save_business UDDI call.
* @throws InvalidParameterException If the value is invalid.
*/
public Save_business createSaveBusiness(String businessKey, String[] names, String[] nameLangCodes, String description, String authInfo) throws InvalidParameterException {
System.out.println("businessKey = " + businessKey);
for (int i = 0; i < names.length; i++) {
System.out.println("lang = " + nameLangCodes[i] + ", name = " + names[i]);
}
System.out.println("description = " + description);
BusinessEntity businessEntity = new BusinessEntity();
if (businessKey!=null && businessKey.length()>0)
businessEntity.setBusinessKey(businessKey);
for (int i = 0; i < names.length; i++) {
if (nameLangCodes[i] == null) {
businessEntity.addName(new Name(names[i]));
} else
businessEntity.addName(new Name(names[i], nameLangCodes[i]));
}
businessEntity.addDescription(new Description(description));
Save_business save = new Save_business();
save.addBusinessEntity(businessEntity);
save.setAuthInfo(authInfo);
return save;
}
/**
* Executes save_business call with arguments stored in Save_business object.
* @param save Argument to UDDI call.
* @return BusinessDetail
* @throws SOAPException SOAP related problems.
* @throws UDDIException If the UDDI call fails.
*/
public BusinessDetail saveBusiness(Save_business save) throws UDDIException, SOAPException {
System.out.print("Check structure validity .. ");
try {
save.check();
} catch (InvalidParameterException e) {
System.out.println("Failed!");
throw new UDDIException(e);
}
System.out.println("OK");
UDDI_Publication_PortType publishing = getPublishingStub();
System.out.print("Save in progress ...");
BusinessDetail businessDetail = publishing.save_business(save);
System.out.println(" done");
return businessDetail;
}
/**
* Prints argument to the console.
* @param businessDetail parameter to be displayed
*/
public void printBusinessDetail(BusinessDetail businessDetail) {
System.out.println();
BusinessEntityArrayList businessEntityArrayList = businessDetail.getBusinessEntityArrayList();
int position = 1;
for (Iterator iterator = businessEntityArrayList.iterator(); iterator.hasNext();) {
BusinessEntity entity = (BusinessEntity) iterator.next();
System.out.println("Business " + position + " : " + entity.getBusinessKey());
System.out.println(entity.toXML());
System.out.println();
System.out.println("********************************************************");
position++;
}
}
/**
* Finds stub for UDDI Publishing API. The URL is read from properties.
* @return Publishing API stub
* @throws SOAPException If SOAP call fails.
*/
public UDDI_Publication_PortType getPublishingStub() throws SOAPException {
// you can specify your own URL in property - uddi.demos.url.publishing
String url = DemoProperties.getProperty(URL_PUBLISHING, "http://localhost:8080/uddi/publishing");
System.out.print("Using Publishing at url " + url + " ..");
UDDI_Publication_PortType publishing = UDDIPublishStub.getInstance(url);
System.out.println(" done");
return publishing;
}