Can not invoke BSSV using soapUI

Andrew2009

Well Known Member
I tried to call a vanilla published Address Book Manager BSSV service using soapUI but I got a timeout exception inside soapUI. For some reason it couldn't connect to the BSSV server. There's no errors in the BSSV instance.

Do you have any idea?

I'm using JDE 9.1 on Windows. Database is SQL Server

Thanks
 
can you connect to the https: page ?

https://{webserver URL}:{https port}/DV910/RI_AddressBookManager?WSDL

Can you connect from the server itself vs from a workstation ?

Are you using the right port ? Remember, BSSV adds 1 for SSL.
 
Yes, I can connect to the wsdl. I just can't invoke it from within soapUI. I saw this error in the bssv log file

<font class="small">Code:</font><hr /><pre>]", which is more than the configured time (StuckThreadMaxTime) of "600" seconds. Stack trace:
Thread-16 "[STUCK] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'" <alive, in native, suspended, priority=1, DAEMON> {
jrockit.net.SocketNativeIO.readBytesPinned(SocketNativeIO.java:???)
jrockit.net.SocketNativeIO.socketRead(SocketNativeIO.java:24)
java.net.SocketInputStream.socketRead0(SocketInputStream.java:???)
java.net.SocketInputStream.read(SocketInputStream.java:107)
com.microsoft.sqlserver.jdbc.TDSChannel.read(IOBuffer.java:1647)
com.microsoft.sqlserver.jdbc.TDSReader.readPacket(IOBuffer.java:3678)
^-- Holding lock: com.microsoft.sqlserver.jdbc.TDSReader@6de8b8[thin lock]
com.microsoft.sqlserver.jdbc.TDSCommand.startResponse(IOBuffer.java:4987)
com.microsoft.sqlserver.jdbc.TDSCommand.startResponse(IOBuffer.java:4978)
com.microsoft.sqlserver.jdbc.SQLServerConnection$1ConnectionCommand.doExecute(SQLServerConnection.java:1440)
com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4570)
com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1380)
^-- Holding lock: java.lang.Object@734153[thin lock]
com.microsoft.sqlserver.jdbc.SQLServerConnection.connectionCommand(SQLServerConnection.java:1446)
com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:1900)
com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:1893)
com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4570)
com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1380)
^-- Holding lock: java.lang.Object@734153[thin lock]
com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1004)
com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:735)
com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:378)
com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:834)
java.sql.DriverManager.getConnection(DriverManager.java:539)
java.sql.DriverManager.getConnection(DriverManager.java:152)
com.jdedwards.database.impl.physical.JDBConnectionManager.createNewConnection(Unknown Source)
com.jdedwards.database.impl.physical.JDBConnectionManager.getPhysicalConnection(Unknown Source)
^-- Holding lock: com.jdedwards.database.impl.physical.JDBConnectionPool@1f83eeb[fat lock]
com.jdedwards.database.impl.physical.JDBRetryableConnection.attempt(Unknown Source)
com.jdedwards.base.util.Retryer.retry(Unknown Source)
com.jdedwards.database.impl.physical.JDBConnectionManager.getConnection(Unknown Source)
com.jdedwards.database.services.bootstrap.JDBBootstrapPhysicalConnectionFactory.newPhysicalAccess(Unknown Source)
com.jdedwards.database.services.bootstrap.JDBBootstrapPhysicalConnectionFactory.newPhysicalAccess(Unknown Source)
com.jdedwards.database.impl.logical.JDBLogicalConnection.resolvePhysicalConnection(Unknown Source)
com.jdedwards.database.impl.logical.JDBLogicalConnection.select(Unknown Source)
com.jdedwards.database.impl.condensed.JDBCondensedAccessExpander.select(Unknown Source)
com.jdedwards.database.services.base.JDBBaseLookupService.prime(Unknown Source)
^-- Holding lock: java.lang.Object@525e1e[thin lock]
com.jdedwards.database.services.ocm.OCM.searchOCM(Unknown Source)
com.jdedwards.database.services.ocm.OCM.getDataSource(Unknown Source)
com.jdedwards.database.services.ocm.OCM.getDatabaseDataSource(Unknown Source)
com.jdedwards.database.services.ocm.OCMObjectLookupService.getDatabaseDataSource(Unknown Source)
com.jdedwards.database.services.base.JDBServiceAugmentedKeyFactory.newAugmentedKey(Unknown Source)
com.jdedwards.database.services.base.JDBBaseLookupService.get(Unknown Source)
com.jdedwards.database.services.base.JDBBaseLookupService.getSingle(Unknown Source)
com.jdedwards.database.services.base.JDBBaseLookupService.getSingle(Unknown Source)
com.jdedwards.database.services.company.CompanyLookup.getCompanyInformationFromOCM(Unknown Source)
com.jdedwards.database.services.company.CompanyLookup.getCompanyInformation(Unknown Source)
com.jdedwards.database.jdb.JDBConnectorImpl.connect(Unknown Source)
com.jdedwards.database.jdb.JDBConnectorImpl.connect(Unknown Source)
com.jdedwards.database.jdb.JDBSystem.connect(Unknown Source)
com.jdedwards.system.connector.dynamic.UserSession.initialize(Unknown Source)
com.jdedwards.system.connector.dynamic.UserSession.<init>(Unknown Source)
com.jdedwards.system.connector.dynamic.Connector.loginBase(Unknown Source)
^-- Holding lock: java.util.Hashtable@1fc35eb[fat lock]
com.jdedwards.system.connector.dynamic.Connector.login(Unknown Source)
oracle.e1.bssvfoundation.impl.security.E1Principal.login(Unknown Source)
oracle.e1.bssvfoundation.impl.security.jaas.E1LoginModule.login(Unknown Source)
com.bea.common.security.internal.service.LoginModuleWrapper$1.run(LoginModuleWrapper.java:110)
com.bea.common.security.internal.service.LoginModuleWrapper.login(LoginModuleWrapper.java:101)
sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:???)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:27)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:575)
javax.security.auth.login.LoginContext.invoke(LoginContext.java:720)
javax.security.auth.login.LoginContext.access$000(LoginContext.java:186)
javax.security.auth.login.LoginContext$4.run(LoginContext.java:683)
javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
javax.security.auth.login.LoginContext.login(LoginContext.java:566)
com.bea.common.security.internal.service.JAASLoginServiceImpl.login(JAASLoginServiceImpl.java:77)
sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:???)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:27)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:575)
com.bea.common.security.internal.utils.Delegator$ProxyInvocationHandler.invoke(Delegator.java:57)
$Proxy22.login(Unknown Source)
weblogic.security.service.internal.WLSJAASLoginServiceImpl$ServiceImpl.login(WLSJAASLoginServiceImpl.java:81)
com.bea.common.security.internal.service.JAASAuthenticationServiceImpl.authenticate(JAASAuthenticationServiceImpl.java:74)
sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:???)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:27)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:575)
com.bea.common.security.internal.utils.Delegator$ProxyInvocationHandler.invoke(Delegator.java:57)
$Proxy40.authenticate(Unknown Source)
weblogic.security.service.WLSJAASAuthenticationServiceWrapper.authenticate(WLSJAASAuthenticationServiceWrapper.java:29)
weblogic.security.service.PrincipalAuthenticator.authenticate(PrincipalAuthenticator.java:339)
weblogic.security.service.PrincipalAuthenticator.authenticate(PrincipalAuthenticator.java:355)
weblogic.xml.crypto.wss.SecurityUtils.assertId(SecurityUtils.java:98)
weblogic.xml.crypto.wss.SecurityUtils.assertIdentity(SecurityUtils.java:51)
weblogic.xml.crypto.wss.UsernameTokenHandler.getSubject(UsernameTokenHandler.java:204)
weblogic.xml.crypto.wss.WSSecurityContext.getSubject(WSSecurityContext.java:654)
weblogic.xml.crypto.wss.WSSecurityContext.getSubject(WSSecurityContext.java:586)
weblogic.wsee.security.wssp.handlers.PostWssServerPolicyHandler.processRequest(PostWssServerPolicyHandler.java:45)
weblogic.wsee.security.wssp.handlers.WssHandler.handleRequest(WssHandler.java:79)
weblogic.wsee.handler.HandlerIterator.handleRequest(HandlerIterator.java:112)
weblogic.wsee.ws.dispatch.server.ServerDispatcher.dispatch(ServerDispatcher.java:77)
weblogic.wsee.ws.WsSkel.invoke(WsSkel.java:71)
weblogic.wsee.server.servlet.SoapProcessor.handlePost(SoapProcessor.java:54)
weblogic.wsee.server.servlet.SoapProcessor.process(SoapProcessor.java:43)
weblogic.wsee.server.servlet.BaseWSServlet$AuthorizedInvoke.run(BaseWSServlet.java:284)
weblogic.wsee.server.servlet.BaseWSServlet.service(BaseWSServlet.java:131)
javax.servlet.http.HttpServlet.service(HttpServlet.java:815)
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:224)
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:108)
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:206)
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:183)
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3687)
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:308)
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:116)
weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2213)
weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2135)
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1420)
weblogic.work.ExecuteThread.execute(ExecuteThread.java:203)
weblogic.work.ExecuteThread.run(ExecuteThread.java:170)
}
</pre><hr />
 
There is stuff missing from the default header of the example Soap requests for security.

There is a document on this problem on the Oracle site. Essentially you have to include some additional security info in the header of the soap request.
 
I entered my JDE username and password in the header already. This is a new BSSV server and the soapUI project worked on my previous BSSV server, different URL of coz.

I'm able to log into JDE on the web with the username and password. I suspect something wrong with the OCM mapping but I double check and everything looked okay.
 
Please verify the following:

1)BSSV Authenticator
The BSSVAuthentication.jar is copied to the SM during the BSSV Package Deployment process. E1BSSVAuthenticator.jar is required to secure business services on Oracle WebLogic Server.

After the BSSV Package is deployed, this jar file should be found in the WLS install path in the following location:

/Oracle/Middleware/wlserver_10.3/serever/lib/mbeantypes/

Also, in the WebLogic Admin Console > Security Realm > myrealm. Select the ‘Providers’ tab

2) Copy the policy file "Wssp1.2-2007-Https-UsernameToken-Plain.xml” and “DemoTrust.jsk” to your WLS Domain:

a. Location of the "Wssp1.2-2007-Https-UsernameToken-Plain.xml”
The policy file "Wssp1.2-2007-Https-UsernameToken-Plain.xml” can be found within the Weblogic_Install_Path\wlserver_10.3\server\lib\weblogic.jar file. Open the jar file (using WinZip for example). The "Wssp1.2-2007-Https-UsernameToken-Plain.xml” file can be found within the weblogic.jar file. The path to the file is 'weblogic\wsee\policy\runtime\Wssp1.2-2007-Https-UsernameToken-Plain.xml'

b. Location of the “DemoTrust.jks” file
The “DemoTrust.jks” can be found in the following location: 'Weblogic_Install_Path\wlserver_10.3\server\lib'

Copy the 'DemoTrust.jks' and 'Wssp1.2-2007-Https-UsernameToken-Plain.xml' to the your 'WLS_Domain' root directory

3)Enable SSL Listen Port’

Select the BSSV Server. In ‘General’ tab, check the ‘SSL Listen Port Enabled’ (WLS only allows https protocol to ‘consume’ Business Services’. The ‘Listen Port’ selected here is 7002.

4)Restart wls

5)Make sure your soupui request is like:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:eek:rac="http://oracle.e1.bssv.JPR01000/" xmlns:java="java:eek:racle.e1.bssv.JPR01000.valueobject" xmlns:java1="java:eek:racle.e1.bssv.JR010020.valueobject">
<soapenv:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
soapenv:mustUnderstand="1">
<wsse:UsernameToken xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:Username>JDE_LOGIN</wsse:Username>
<wsse:password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">JDE_PWD</wsse:password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<orac:getAddressBookElement>
<java:Entity>
<java1:EntityId>5562256</java1:EntityId>
</java:Entity>
</orac:getAddressBookElement>
</soapenv:Body>
</soapenv:Envelope>

Regards

Bruno Condemi
 
Thanks Bruno for a very detail reply. I checked everything and re-tried it but unfortunately no success.

I compare between this BSSV server and the one that worked and on the non-working server under the WLS domain location, I see these files which do not exist on the bssv server that worked.

1) wls_webservice_complete_update.py
2) wls_webservice_complete_update_utils$py.class
3) wls_webservice_complete_update_utils.py
4) wls_webservice_fixup.py
5) wls_webservice_fixup_utils.py

I'm tempted to rebuild the whole BSSV server.
 
Can you post the bssv configuration, for both servers?
Pay attention to the section that configures the spec datasource too.
 
I did a BSSV package yesterday already. A CNC person is helping me to re-install the software now. Hopefully it will work this time.
 
Its not just the user name and password. Its a missing .dtd reference (or something like that) in the header.

If you have access to Oracle support, you should have no problem finding the tech bulletin.

If you don't have access to Oracle support, well...good luck with that.
 
The dtd is not more used (from years).
May be you want to refear to xsd?
But please what lead your mind to this conclusion?
 
Its definitely not .DDT Bruno. And whether its .dtd or .xsd - its the same difference. And as far as you know, its the same thing.

The canned samples don't work without a change to the header part of the request.
 
We reinstalled the software but still same error. We suspect it's because of the machine setup, ie. networking. In the error messages I posted earlier, I saw things like searchOCM (Unknown) and validating errors. So it looks like it's trying to connect to another machine but unsuccessful. We're still investigating the issue. If you have any idea, please let me know. I'll post my findings once we figure out what the problem is.
 
Of course I mean DTD, it's obvious.
DTD and XSD are not same (even if they have the same purpose).

But I don't understand why you say there is a reference missing in this case?

There is nothing, in the log provided, that point to a missing reference and Andrew says that he can consume the service deploy to another machine.

From the log we can see that the bssv is invoked, the issue is related to the communication between bssv and logic server, not between client and bssv.

So I need to repeat my self; why you say that there is a DTD (or XSD) issue?
 
Back
Top