Hi,
i am developing the java application which is use to connect with oracle sales cloud services so for this i have did the following steps.
step 1: created the custom Application
step 2: right click on project and web service as category and web service client and proxy as item and i have given this contact wsdl file.
e.g
https://cagc-test.crm.us1.oraclecloud.com/foundationParties/PersonService?wsdl
its generated the successfully and i have added the credential to main class . this is my main class.
import com.oracle.xmlns.adf.svc.types.FindControl;
import com.oracle.xmlns.adf.svc.types.FindCriteria;
import com.oracle.xmlns.apps.cdm.foundation.parties.personservice.Person;
import com.oracle.xmlns.apps.cdm.foundation.parties.personservice.PersonResult;
import com.sun.xml.ws.api.addressing.AddressingVersion;
import com.sun.xml.ws.api.addressing.WSEndpointReference;
import com.sun.xml.ws.developer.WSBindingProvider;
import com.sun.xml.ws.message.StringHeader;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.annotation.Generated;
import javax.xml.ws.BindingProvider;
import weblogic.security.SSL.TrustManager;
import weblogic.wsee.security.bst.ClientBSTCredentialProvider;
import weblogic.wsee.security.saml.SAMLTrustCredentialProvider;
import weblogic.wsee.security.unt.ClientUNTCredentialProvider;
import weblogic.wsee.security.util.CertUtils;
import weblogic.xml.crypto.wss.WSSecurityContext;
import weblogic.xml.crypto.wss.provider.CredentialProvider;
// !THE CHANGES MADE TO THIS FILE WILL BE DESTROYED IF REGENERATED!
// This source file is generated by Oracle tools
// Contents may be subject to change
// For reporting problems, use the following
// Version = Oracle WebServices (11.1.1.0.0, build build (050908.2342.55399))
public class PersonServiceSoapHttpPortClient {
private static final AddressingVersion WS_ADDR_VER = AddressingVersion.W3C;
public static void main(String[] args) throws Exception{
PersonService_Service personService_Service = new PersonService_Service();
PersonService personService = personService_Service.getPersonServiceSoapHttpPort();
// Configure credential providers
Map<String, Object> requestContext = ((BindingProvider) personService).getRequestContext();
try {
setPortCredentialProviderList(requestContext);
} catch (Exception ex) {
ex.printStackTrace();
}
// Get the request context to set the outgoing addressing properties
// WSBindingProvider wsbp = (WSBindingProvider) personService;
// WSEndpointReference replyTo =
// new WSEndpointReference("http://<replace with the URL of the callback service>", WS_ADDR_VER);
// String uuid = "uuid:" + UUID.randomUUID();
//
// wsbp.setOutboundHeaders(new StringHeader(WS_ADDR_VER.messageIDTag, uuid),
// replyTo.createHeader(WS_ADDR_VER.replyToTag));
// Add your code to call the desired methods.
FindCriteria findCriteria=new FindCriteria();
findCriteria.setFetchSize(1);
findCriteria.setFetchSize(10);
FindControl findControl=new FindControl();
findControl.setRetrieveAllTranslations(true);
System.out.println("before invoking method");
PersonResult personResult=personService.findPerson(findCriteria, findControl);
List<Person> persons=personResult.getValue();
System.out.println("The Response size is ::"+persons.size());
}
@Generated("Oracle JDeveloper")
public static void setPortCredentialProviderList(Map<String, Object> requestContext) throws Exception {
// TODO - Provide the required credential values
String username = "abc";
String password = "acdd";
String clientKeyStore = "";
String clientKeyStorePassword = "";
String clientKeyAlias = "";
String clientKeyPassword = "";
String serverKeyStore = "";
String serverKeyStorePassword = "";
String serverKeyAlias = "";
List<CredentialProvider> credList = new ArrayList<CredentialProvider>();
credList.add(getUNTCredentialProvider(username, password));
credList.add(getBSTCredentialProvider(clientKeyStore, clientKeyStorePassword, clientKeyAlias, clientKeyPassword, serverKeyStore, serverKeyStorePassword, serverKeyAlias, requestContext));
credList.add(getSAMLTrustCredentialProvider());
requestContext.put(WSSecurityContext.CREDENTIAL_PROVIDER_LIST, credList);
}
@Generated("Oracle JDeveloper")
public static CredentialProvider getSAMLTrustCredentialProvider() {
return new SAMLTrustCredentialProvider();
}
@Generated("Oracle JDeveloper")
public static CredentialProvider getUNTCredentialProvider(String username, String password) {
return new ClientUNTCredentialProvider(username.getBytes(), password.getBytes());
}
@Generated("Oracle JDeveloper")
public static CredentialProvider getBSTCredentialProvider(String clientKeyStore, String clientKeyStorePwd,
String clientKeyAlias, String clientKeyPwd,
String serverKeyStore, String serverKeyStorePwd,
String serverKeyAlias,
Map<String, Object> requestContext) throws Exception {
List serverCertList = CertUtils.getCertificate(serverKeyStore, serverKeyStorePwd, serverKeyAlias, "JKS");
List clientCertList = CertUtils.getCertificate(clientKeyStore, clientKeyStorePwd, clientKeyAlias, "JKS");
final X509Certificate serverCert =
(serverCertList != null && serverCertList.size() > 0) ? (X509Certificate) serverCertList.get(0) : null;
final X509Certificate clientCert =
(clientCertList != null && clientCertList.size() > 0) ? (X509Certificate) clientCertList.get(0) : null;
requestContext.put(WSSecurityContext.TRUST_MANAGER, new TrustManager() {
public boolean certificateCallback(X509Certificate[] chain, int validateErr) {
boolean result =
(chain != null && chain.length > 0) && (chain[0].equals(serverCert) || chain[0].equals(clientCert));
return result;
}
});
return new ClientBSTCredentialProvider(clientKeyStore, clientKeyStorePwd, clientKeyAlias, clientKeyPwd, "JKS",
serverCert);
}
}
when i run this above main class i am getting this following exception.
/home/ishwar/oraclejdeveloper/oracle_common/jdk/bin/java -server -Djava.endorsed.dirs=/home/ishwar/oraclejdeveloper/oracle_common/modules/endorsed -classpath /home/ishwar/jdeveloper/mywork/LocatioinTestDemo/.adf:/home/ishwar/jdeveloper/mywork/LocatioinTestDemo/ContactClientDemo/classes:/home/ishwar/oraclejdeveloper/wlserver/server/lib/weblogic.jar:/home/ishwar/oraclejdeveloper/oracle_common/modules/oracle.jrf_12.1.3/jrf.jar:/home/ishwar/oraclejdeveloper/oracle_common/modules/oracle.toplink_12.1.3/eclipselink.jar:/home/ishwar/oraclejdeveloper/oracle_common/modules/oracle.toplink_12.1.3/org.eclipse.persistence.nosql.jar:/home/ishwar/oraclejdeveloper/oracle_common/modules/oracle.toplink_12.1.3/org.eclipse.persistence.oracle.nosql.jar:/home/ishwar/oraclejdeveloper/wlserver/modules/com.bea.core.antlr.runtime_2.0.0.0_3-2.jar:/home/ishwar/oraclejdeveloper/oracle_common/modules/javax.persistence_2.0.jar:/home/ishwar/oraclejdeveloper/oracle_common/modules/com.oracle.webservices.fmw.wsclient-impl_12.1.3.jar:/home/ishwar/oraclejdeveloper/oracle_common/modules/com.oracle.webservices.fmw.jrf-ws-api_12.1.3.jar -Djavax.net.ssl.trustStore=/tmp/trustStore5180348667672416684.jks com.oracle.xmlns.apps.cdm.foundation.parties.personservice.applicationmodule.PersonServiceSoapHttpPortClient
SEVERE: java.io.FileNotFoundException: ./config/jps-config.xml (No such file or directory)
INFO: Policy subject is not registered.
SEVERE: java.io.FileNotFoundException: ./config/jps-config.xml (No such file or directory)
SEVERE: java.io.FileNotFoundException: ./config/jps-config.xml (No such file or directory)
SEVERE: java.io.FileNotFoundException: ./config/jps-config.xml (No such file or directory)
SEVERE: java.io.FileNotFoundException: ./config/jps-config.xml (No such file or directory)
INFO: EffectivePolicySetFeature not on the binding, will look up policy set for; ResourcePattern [absolutePortableExpression=///UNKNOWN|#MODULE|WS-Client({http://xmlns.oracle.com/apps/cdm/foundation/parties/personService/applicationModule/}PersonService#PersonServiceSoapHttpPort,wls)]
SEVERE: java.io.FileNotFoundException: ./config/jps-config.xml (No such file or directory)
INFO: EffectivePolicySetFeature=oracle.j2ee.ws.common.wsm.EffectivePolicySetFeature@76f6c7e1
INFO: WSM Security is not enabled for Policy Subject: ResourcePattern [absolutePortableExpression=///UNKNOWN|#MODULE|WS-Client({http://xmlns.oracle.com/apps/cdm/foundation/parties/personService/applicationModule/}PersonService#PersonServiceSoapHttpPort,wls)]
java.lang.SecurityException: keyStoreFilename is either null or empty string
at weblogic.wsee.security.util.CertUtils.getCertificate(CertUtils.java:89)
at com.oracle.xmlns.apps.cdm.foundation.parties.personservice.applicationmodule.PersonServiceSoapHttpPortClient.getBSTCredentialProvider(PersonServiceSoapHttpPortClient.java:129)
at com.oracle.xmlns.apps.cdm.foundation.parties.personservice.applicationmodule.PersonServiceSoapHttpPortClient.setPortCredentialProviderList(PersonServiceSoapHttpPortClient.java:106)
at com.oracle.xmlns.apps.cdm.foundation.parties.personservice.applicationmodule.PersonServiceSoapHttpPortClient.main(PersonServiceSoapHttpPortClient.java:52)
before invoking method
Exception in thread "main" com.sun.xml.ws.client.ClientTransportException: The server sent HTTP status code 401: Unauthorized
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.checkStatusCode(HttpTransportPipe.java:332)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.createResponsePacket(HttpTransportPipe.java:274)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:232)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:145)
at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:139)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)
at com.sun.xml.ws.client.Stub.process(Stub.java:463)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:191)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:92)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:161)
at com.sun.proxy.$Proxy41.findPerson(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at weblogic.wsee.jaxws.spi.ClientInstanceInvocationHandler.invoke(ClientInstanceInvocationHandler.java:87)
at com.sun.proxy.$Proxy42.findPerson(Unknown Source)
at com.oracle.xmlns.apps.cdm.foundation.parties.personservice.applicationmodule.PersonServiceSoapHttpPortClient.main(PersonServiceSoapHttpPortClient.java:77)
Process exited with exit code 1.
i dont know what i missed.