我在一個Java/Salesforce tutorial,但我無法讓它工作,因爲SoapBindingStub似乎是基於折舊庫的過時代碼。所以我嘗試使用JAX-WS Quick Start的代碼對代碼進行網格劃分,但是這也沒有起作用。無論我做了什麼,示例控制檯應用程序最終都會遭遇異常,抱怨「Web服務異常創建salesface端口:由於類javax.xml.ws.WebServiceException的安全性限制,無法創建JAXBContext」。我放棄了(暫時)試圖混淆這兩個代碼,而是現在只是在抽象JAX-WS Quickstart.java,以便我能理解它的工作原理,並在其他應用程序中重用其方法。爲什麼我的Java/SalesForce應用程序由於安全限制而無法創建JAXBContext?
無論我如何切片和切塊代碼,它總是被卡在相同的位置,基本上有相同的錯誤。
這裏是方法的當前代碼其persistantly失敗:
private void initPort()
{
try
{
URL wsdlLocation = this.getClass().getClassLoader().getResource("META-INF/enterprise.wsdl");
if (wsdlLocation == null)
{
WebServiceException webServiceException = new WebServiceException("enterprise.wsdl not found!");
ExceptionToolkit.display("Web Service Exception can't find enterprise.wsdl", webServiceException);
throw webServiceException;
}
else {System.out.println("\nFOUND enterprise.wsdl!!!\n\n");}
QName qName = new QName("urn:enterprise.soap.sforce.com", "SforceService");
SforceService sforceService = new SforceService(wsdlLocation, qName);
System.out.println("\nsforceService INITIALIZED. About to get Soap.\n\n");
Soap soap = (sforceService).getSoap();
System.out.println("\nWe have soap.\n\n");
setPort (soap);
}
catch (WebServiceException webServiceException)
{
ExceptionToolkit.display("Web Service Exception creating salesface port", webServiceException);
return;
}
}
以下是錯誤,立即之前和之後,包括輸出:在
Running main loop
FOUND enterprise.wsdl!!!
sforceService INITIALIZED. About to get Soap.
Web Service Exception creating salesface port: Unable to create JAXBContext due to the security restriction
on class javax.xml.ws.WebServiceException
javax.xml.ws.WebServiceException: Unable to create JAXBContext due to the security restriction
at com.sun.xml.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:131)
at com.sun.xml.ws.model.AbstractSEIModelImpl.postProcess(AbstractSEIModelImpl.java:63)
at com.sun.xml.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:224)
at com.sun.xml.ws.client.WSServiceDelegate.addSEI(WSServiceDelegate.java:588)
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:291)
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:274)
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:267)
at javax.xml.ws.Service.getPort(Unknown Source)
at com.sforce.soap.enterprise.SforceService.getSoap(SforceService.java:53)
at hu.flux.salesforce.LoginToolkit.initPort(LoginToolkit.java:78)
at hu.flux.salesforce.LoginToolkit.doLogin(LoginToolkit.java:122)
at hu.flux.salesforce.LoginToolkit.<init>(LoginToolkit.java:49)
at hu.flux.salesforce.samples.Quickstart.mainLoop(Quickstart.java:55)
at hu.flux.salesforce.samples.Quickstart.<init>(Quickstart.java:28)
at hu.flux.salesforce.samples.Quickstart.main(Quickstart.java:21)
Caused by: java.security.PrivilegedActionException: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
java.lang.StackTraceElement does not have a no-arg default constructor.
this problem is related to the following location:
at java.lang.StackTraceElement
at public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()
at java.lang.Throwable
at java.lang.Exception
at com.sforce.ws.ConnectionException
at com.sforce.ws.SoapFaultException
at com.sforce.soap.enterprise.fault.ApiFault
at public javax.xml.bind.JAXBElement com.sforce.soap.enterprise.fault.ObjectFactory.createFault(com.sforce.soap.enterprise.fault.ApiFault)
at com.sforce.soap.enterprise.fault.ObjectFactory
com.sforce.ws.types.Time does not have a no-arg default constructor.
this problem is related to the following location:
at com.sforce.ws.types.Time
at public com.sforce.ws.types.Time com.sforce.soap.enterprise.sobject.BusinessHours.getFridayEndTime()
at com.sforce.soap.enterprise.sobject.BusinessHours
at public com.sforce.soap.enterprise.sobject.BusinessHours com.sforce.soap.enterprise.sobject.ObjectFactory.createBusinessHours()
at com.sforce.soap.enterprise.sobject.ObjectFactory
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.xml.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:124)
... 14 more
Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
java.lang.StackTraceElement does not have a no-arg default constructor.
this problem is related to the following location:
at java.lang.StackTraceElement
at public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()
at java.lang.Throwable
at java.lang.Exception
at com.sforce.ws.ConnectionException
at com.sforce.ws.SoapFaultException
at com.sforce.soap.enterprise.fault.ApiFault
at public javax.xml.bind.JAXBElement com.sforce.soap.enterprise.fault.ObjectFactory.createFault(com.sforce.soap.enterprise.fault.ApiFault)
at com.sforce.soap.enterprise.fault.ObjectFactory
com.sforce.ws.types.Time does not have a no-arg default constructor.
this problem is related to the following location:
at com.sforce.ws.types.Time
at public com.sforce.ws.types.Time com.sforce.soap.enterprise.sobject.BusinessHours.getFridayEndTime()
at com.sforce.soap.enterprise.sobject.BusinessHours
at public com.sforce.soap.enterprise.sobject.BusinessHours com.sforce.soap.enterprise.sobject.ObjectFactory.createBusinessHours()
at com.sforce.soap.enterprise.sobject.ObjectFactory
at com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:66)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:422)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:270)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:103)
at com.sun.xml.bind.api.JAXBRIContext.newInstance(JAXBRIContext.java:89)
at com.sun.xml.ws.model.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:126)
at com.sun.xml.ws.model.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:125)
... 16 more
1. Login
2. Get Accounts
3. Update Accounts
4. Get Server Timestamp
5. Exit
Enter a menu option:
最後一行(按時間順序)這是指我自己的代碼是:
at hu.flux.salesforce.LoginToolkit.initPort(LoginToolkit.java:78)
System.out.println stat源代碼中的元素確認這是執行終止的內容。該行特別指出:
Soap soap = (sforceService).getSoap();
有誰知道如何或爲何這可能超越安全限制最終放棄Java無法創建的JAXBContext?
Downvoting一個合法的問題...非常有幫助。 : -/ – 2011-01-23 12:24:49