|
This page contains frequently asked questions and known issues about RPC, in relation to JIRA. On this page:
Common ProblemsCouldn't build RPC Plugin due to NullPointerExceptionIf you are getting a NullPointerException and a stack trace which looks similar with the one described this document, you may need to disable unit testing in project.xml for a smooth build, as mentioned in the document referenced previously. Getting InfrastructureException or ClassCastException upon invocationIf you are getting a ClassCastException or com.atlassian.jira.InfrastructureException upon invocation, you may have provided the incorrect data types for the arguments. To resolve this problem, please correct the data types of the arguments accordingly. If this is not the case and this error is occurring, then it is highly likely that autotyping is the culprit. To resolve this problem, you will need to disable autotyping or alternatively, explicitly declare the data types for the arguments. SOAPConverting to type as defined in WSDLYou may occasionally encounter problems mapping the correct data type of your programming language to the one defined in WSDL. If you are running into difficulties related to data mapping, we recommend that you consult the user guide or API documentation of the client library you are using, e.g. WSDL<->Java mapping, Python's SOAPpy, etc, for assistance. Changing the authentication token timeout valueIf you wish to change the timeout value of the authentication token (which is obtained once you've logged in), you will need to update the value for the Providing schemes to method's argumentsUsers are often unsure whether they should construct or retrieve the scheme object(s) which will be passed to an argument. For your understanding, internally, the RPC plugin recognises just the id of the scheme, hence the name, type, description, etc. are usually insignificant. Could not update an issue with a RemoteIssue objectUnfortunately, you can only create an issue with a RemoteIssue object. You cannot update an issue with a RemoteIssue object. The createIssue() method expects a RemoteIssue object as its argument, however the updateIssue() method expects an array of RemoteFieldValue objects (as per the WDSL). Setting the value of cascading select customfieldSetting the value of a cascading select custom field can be complicated, as the create issue and update issue scenarios are different. Please refer to the points below for assistance in setting up your cascading select custom field correctly:
The same logic applies to XML-RPC, please refer to this example. Could not invoke methods due to session invalidationA known issue exists where methods may be prevented from being invoked due to session invalidation, i.e. an IllegalStateException occurs when trying to invoke the RPC methods: java.lang.IllegalStateException: getAttribute: Session already invalidated at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:221) at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:128) at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:633) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:719) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242) at javax.xml.parsers.SAXParser.parse(SAXParser.java:375) at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696) at org.apache.axis.Message.getSOAPEnvelope(Message.java:424) at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62) at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206) at org.apache.axis.client.Call.invokeEngine(Call.java:2754) at org.apache.axis.client.Call.invoke(Call.java:2737) at org.apache.axis.client.Call.invoke(Call.java:2413) at org.apache.axis.client.Call.invoke(Call.java:2336) at org.apache.axis.client.Call.invoke(Call.java:1793) at com.atlassian.jira.rpc.soapclient.JirasoapserviceV2SoapBindingStub.getFieldsForAction(JirasoapserviceV2SoapBindingStub.java:3414) Please refer to the bug report being tracked at JRA-8009. We would appreciate any comments added to this issue, if you encounter this problem. Getting fixed targetNamespaceGetting a fixed targetNamespace is a known issue, which is being tracked at JRA-10849. The targetNamespace of the WSDL is defined by the first request to it. Having concurrency problem with multiple issue updateConstantly or simultaneously updating an issue causes data inconsistency of the issue. This is a known issue which is currently being tracked at JRA-11382. Could not invoke user-group methods due to deserialisation or invalid element problemsIf you are using Python (SOAPpy) and encountering deserialisation or invalid element problems while invoking the addUserToGroup() method, e.g. <Fault soapenv:Server.userException: org.xml.sax.SAXException: No deserializer defined for array type {http://soapinterop.org/xsd}SOAPStruct:
<SOAPpy.Types.structType detail at 1085258540>: {'hostname': 'atlassian01.contegix.com', 'faultData': <SOAPpy.Types.structType faultData at
1084456684>: {'exception': None, 'message': 'No deserializer defined for array type {http://soapinterop.org/xsd}SOAPStruct'}}>
Traceback (most recent call last):
File "./soapclient.py", line 58, in ?
soap.addUserToGroup(auth, group, user)
SOAPpy.Types.faultType: <Fault soapenv:Server.userException: org.xml.sax.SAXException: Invalid element in com.atlassian.jira.rpc.soap.beans.
RemoteGroup - email: <SOAPpy.Types.structType detail at 29991600>: {'hostname': 'bruwa116', 'faultData': <SOAPpy.Types.structType faultData
at 29991680>: {'exception': None, 'message': 'Invalid element in com.atlassian.jira.rpc.soap.beans.RemoteGroup - email'}}>
you should be able to resolve this by following the workarounds described in these issues — JRA-7920 and JRA-7971 Using the addActorsToProjectRole methodIf you are having problems using the addActorsToProjectRole method, you may find the following advice helpful: For example, jiraSoapService.addActorsToProjectRole(token, new String[]{"admin", "foo", "bar"}, projectRole, project, UserRoleActor.TYPE); Could not upload attachments to an issue due to OutOfMemoryErrorIf your Java (Axis) SOAP client is throwing an OutOfMemoryError while attaching files to an issue, Axis 1.3 may be the cause. This known issue has been commonly reported by users and is being tracked at JRA-11693. Getting content-type complaint with .NET clientThis seems to be the problem with the .NET web service library. We would appreciate your contributions to tracking issue, JRA-11515, if you encounter a similar problem. Setting the reporter value upon issue creationIf you are not able to set the reporter value (to someone other than the current SOAP client) even though it is provided, you may be using the old RPC plugin (3.6.x and older). This improvement (JRA-8794) is delivered in the latest version (3.7.x onwards). Other Known RPC IssuesUnfortunately there are a number of known RPC issues, which are currently unsupported. These have already been raised in our issue tracker and are listed below.
XML-RPCPlease take note that a number of the frequently asked XML-RPC questions are similar to the respective SOAP questions above, as some of the functions of the XML-RPC service are underpinned by the SOAP service. Hence, the questions may not be mentioned again below. Could not create and update issue with same DictionaryIf you are running into problems creating and updating issues with the same Directory, you may be specifying the arguments incorrectly. Internally, JIRA's XmlRpcService uses SOAP to create and update an issue. Due to this reason, the Dictionary (or Hashtable, or Map) argument in createIssue() and updateIssue() are different as explained above. This Perl XMLRPC::Lite example demonstrates how an issue is created and updated: # Create an issue with a RemoteIssue structure $jira->call("jira1.createIssue", $auth, { "project" => "MYC", "type" => 1, "reporter" => "admin", "assignee" => "admin", "summary" => "Issue created via Perl XMLRPC :)", "customFieldValues" => [ {"customfieldId" => "customfield_10000", "values" => [SOAP::Data->type(string => "10000")] }, {"customfieldId" => "customfield_10000", "key" => "1", "values" => [SOAP::Data->type(string => "10002")] } ] }); # Update an issue with field-values pairs $jira->call("jira1.updateIssue", $auth, "MYC-3", {"customfield_10000" => [SOAP::Data->type(string => "10000")], "customfield_10000:1" => [SOAP::Data->type(string => "10002")] } ); Setting the value of cascading select customfieldPlease refer to the explanation in SOAP section. Need more help?If you can't find an answer to your question on this page, you may want to try searching the Atlassian forums and Issue Tracker. These two resources often contain helpful discussion on RPC topics that may solve your problem. The following documents may also help answer your question: |

Comments (5)
Feb 29, 2008
amit mitra says:
Hi to all, Can anybody help me to create isssue in JIRA thro...Hi to all,
Can anybody help me to create isssue in JIRA through XML-RPC client In JAVA.It was working before assing Custom field in JIRA.
But after adding custom field its throwinig the Infrastructure Exception....
Can any body tell me the code *or *indentify the errors in this code...
-------------------------------------------------------------------------------------------------------------------------------String proj=new String("MP");
String typ=new String("1");String summ=new String("Created after reducing JAR file");
String pri=new String("2");String rep=new String("amitmitra83");
String desc=new String("test for error");String asign=new String("amitmitra83");
String cstid0=new String("customfield_10000");String cstid1=new String("customfield_10001");String cstid2=new String("customfield_10002");
String cstval0=new String("Always");String cstval1=new String("S3");
String cstval2=new String("234"); Hashtable issue = new Hashtable();
issue.put("project",proj);issue.put("type", typ);
issue.put("summary", summ);issue.put("priority", pri);
issue.put("reporter",rep);issue.put("description",desc);issue.put("assignee", asign); Vector cust_fld=new Vector();
Hashtable Custom_fields = new Hashtable();Custom_fields.put("customfieldId",cstid0);Custom_fields.put("values",cstval0);
cust_fld.add(Custom_fields);
Custom_fields = new Hashtable();
Custom_fields.put("customfieldId",cstid1);Custom_fields.put("values",cstval1);
cust_fld.add(Custom_fields);
Custom_fields = new Hashtable();
Custom_fields.put("customfieldId",cstid2);Custom_fields.put("values",cstval2);
cust_fld.add(Custom_fields);
issue.put("customFieldValues", cust_fld); Vector NewParams=new Vector();
NewParams.add(loginToken);
NewParams.add(issue);Object objIssues = rpcClient.execute("jira1.createIssue", NewParams);System.out.println("Returned issue key: " + objIssues);
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Please Help..................................
Thanks in Advance
Mar 26, 2008
JP Patrikainen says:
Hi, Does anybody have a simple example Java code "Setting the value of cascadin...Hi,
Does anybody have a simple example Java code "Setting the value of cascading select customfield"?
The Javadoc for SOAP/XML-RPC API is incomplete and I did not find any Java samples for this .. perl is not my "middle name".
Please Help.
Chears,
-JP
May 15, 2008
Matt Doar says:
This page is a good idea but the execution leaves a lot to be desired. What is t...This page is a good idea but the execution leaves a lot to be desired. What is the point of all the "stupid customers" attitude throughout the document? It reads like someone with a bad attitude wrote it and then tech pubs just posted it as it came to them.
I'd like to refer my clients to this page but not until it stops patronizes them.
May 15, 2008
Ian Daniel [Atlassian] says:
Hi Matt, Thank you very much for picking us up on this. I agree that the tone o...Hi Matt,
Thank you very much for picking us up on this. I agree that the tone of this page is not appropriate. We will fix it: JRA-14970.
Kind regards,
Ian
Aug 27
Andrew Lui says:
Hi Matt, Thank you for your feedback on this page. I've provided more appropria...Hi Matt,
Thank you for your feedback on this page. I've provided more appropriate wording to the FAQs on this page and revised the layout as well.
Apologies for the delay in addressing this.
Kind Regards,
Andrew