Search This Blog

Wednesday, July 17, 2013

Error getting Cluster Config Set URLs for uri (JDeveloper 10.1.3)

The error Error getting Cluster Config Set URLs for uri appeared when I was created Application Server Connection from JDeveloper. Application Server version 10.x. Please note that, this is a clustered environment.




The following workaround solution worked for me.

I used the IP address instead of the server name in the Host Name filed. It's worth looking at /etc/host entries to for the IP address. Retested the connection and getting this. I ignored this error. As long as you can use this Application Server Connection to create an Integration Server connection, its ok to ignore... worked for me  :-)


I find these links very helpful. Mentions some other workaround...

Thursday, July 4, 2013

Connection issue: No route to host

A nice step by step investigation and solution on this problem from OTN. Wanted to share... :)

------------------------
Hi all,

I have a problem with my BPEL process (vers. 10.1.3.4).
I am trying to call an external web service and I get the following error (I can access the web service just using its URL):

exception on JaxRpc invoke: HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: No route to host

I have tried pinging the remote server with success, so I should be able to connect (no proxy issue or something like that).

I have tried looking in the BPEL logs found at:
<oracle home>/opmn/logs
<oracle home>/bpel/system/logs
<oracle home>/bpel/domains/default/logs
This did not give anything useful either.

I deploy using JDeveloper. I have checked the proxy settings here - and there are none set.

Does anybody have any ideas as to what can be wrong?
Any help or hints will be much appreciated.

Regards,
Aagaard

------------------------

Hi Aagaard,

Maybe some open doors to kick in, but you say that you're able to ping the host of the webservice and can access it using it's url. Did you test it on you development machine or on the machine that is running Application Server? Since these need not be the same (often they're not, of course) it might be that you're server might have other routes thatn your development machine.

If the remote webservice is running on http://<webserver>:<port>/webservice I would open a terminal session on the server that's running your soasuite and not only do a ping but also a:
prompt>telnet <webserver> <port>
Note there is a space in stead of a colon between webserver and port.
This way you particularly connect to the webserver using on the given port. If there is no service listening on that port you would get a connection refused error.

Regards,
Martien

------------------------
Hi Martien,

Thank you for the swift reply.

Yes, I tried pinging from both development machine and from application server. Both successful.

Tried the telnet approach and interestingly enough that failed.

[oracle@prima logs]$ telnet csc2835139 18111
Trying 172.19.205.69...
telnet: connect to address 172.19.205.69: No route to host
telnet: Unable to connect to remote host: No route to host

So I guess that means that I can access the remote machine, but that no service is listening on the given port?
Even though I can access the web service via a web browser?

Regards,
Aagaard
------------------------
Correct Answer by MartienvandenAkker  on Oct 6, 2008 10:49 AM
 
Well it could also mean that from the server which is running your applicationserver the port 18111 is blocked. So I would check with your network-managers if this port is open from your applicationserver. They should check the firewalls (if you have no control on that yourself).

Often the situation at a customer is that your development pc is at one LAN while your (development, test, acceptance, production) application server is in a datacenter on a different sub-lan. With another fire-wall. From your development PC you need to access internet-http and maybe other protocols. But these are usually forbidden on the datacenter lan. You'll have a separate route from your development lan to the datacenter. Probably the server has 2 NICs: one for the internal network and one connected to the Demilitarized Zone. Within the DMZ probably a proxy/reverseproxy configuration routes the requests from outside to your application server and visa versa. So the proxy should also be checked.

This should normally the case at a customer-site, even when its a development environment. Because you don't want to have intruders hacking into your systems, even on development. And although you might not care, the dev-env should reflect your prod-env. So it should also use a dmz with a proxy/reverseproxy setup. If it is a setup on your laptop or your home lan your setup might be simpeler. But then again you might have to cope with different firewalls. If it is all on your laptop (using VMWare for example) I would try when temporarly shutdown all Firewalls.

You told that you did not have a proxy. Does that count for both your dev-pc as well as the application server?
------------------------
Hi Martien,

You were right. I did not have access to the port from the BPEL server.
Getting access solved my problem.

Thank you very much for the assist.

Cheers,
Aagaard
 
 

Tuesday, July 2, 2013

Back to Basics: Execute Immediate and SELECT statement

Execute Immediate statement prepares and executes the dynamic statement. For single row queries we can get the data using ‘INTO’ clause and store it in the variable. We can also use bind variable using ‘USING’ clause. Placeholder for the bind variables are defined as text, preceded by colon ( : ). In this blog post, we will show you how can we use Execute Immediate statement to retrieve the data. Following is the small PL/SQL stored procedure that demonstrates the use of Execute Immediate. Connect to the database via SQL*Plus using proper credentials and create the following procedure.

CREATE OR REPLACE PROCEDURE test_proc(p_object_Name IN VARCHAR2)
AS
v_object_Type user_objects.object_type%TYPE;
BEGIN
BEGIN
EXECUTE IMMEDIATE
‘SELECT object_Type ‘
|| ‘ FROM user_objects ‘
|| ‘ WHERE object_name = : obj_name ‘
INTO v_object_Type
USING p_object_Name;
dbms_output.put_line(‘Object Type is ‘ || v_object_Type);
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20950, ‘object does not exist: ‘ || p_object_name);
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20951, ‘Error retrieving oject name: ‘ || SQLERRM);
END;
END test_proc;
/
Once the procedure is successfully created, let us execute it to see the results.
SQL> exec test_proc(‘TEST_PROC’);
Object Type is PROCEDURE
PL/SQL procedure successfully completed.
Here we have used bind variable to improve the performance. It is used in ‘USING’ clause. During execution : obj_name placeholder value will be replaced with the value from p_object_name.
Couple of things we have to remember when dealing with dynamic sqls are
•  ;  is not placed at the end of the SELECT statement, but it is placed at the end of the Execute Immediate statement.
• Similar thing is also with INTO clause. INTO is outside of quoted SELECT statement.
As demonstrated above, Execute Immediate is the way to deal with dynamic sqls.

Source: http://decipherinfosys.wordpress.com/2008/09/11/back-to-basics-execute-immediate-and-select-statement/