URGENT Servlet with RMI ConnectionException
i have an object with two personalities: Servlet and RMI.
However when i invoke it using the web browser, the following exceptions pop out:
<!--
java.rmi.ConnectException: Connection refused to host: 172.20.134.24; nested exc
eption is:
java.net.ConnectException: Connection refused: connect
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:567)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:185
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171)
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:313)
at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
at IncomingSMSController.init(IncomingSMSController.java:43)
at IncomingSMSController.init(IncomingSMSController.java:35)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.
java:916)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.jav
-->
the way i code my program is as follow:
<!--
protected void init()throws ServletException{
try{
System.out.println("\n<<IN>>");
Registry reg=LocateRegistry.getRegistry();
System.out.println("\n<<"+reg+">>");
reg.rebind("ControllerInterface",this);
bound=true;
System.out.println("Server now bound to IncomingSMSController");
}catch(Exception e){
System.out.println("Error binding");
e.printStackTrace();
public static void main(String[] args)throws RemoteException,ServletException{
Controller con=new Controller();
con.init();
-->
Anyone please help thanks. i have been asking this question here for many time and no one reply may i know at least why?
thanks.
Hi,
I see the java doc of LocateRegsitry and you can read :
LocateRegistry is used to obtain a reference to a bootstrap remote object registry on a particular host (including the local host), or
to create a remote object registry that accepts calls on a specific port.
Note that a getRegistry call does not actually make a
connection to the remote host. It simply creates a local reference to
the remote registry and will succeed even if no registry is running on
the remote host. Therefore, a subsequent method invocation to a remote
registry returned as a result of this method may fail.
So may be the exception, throw when you call rebind, is due to non active registry in local machine. You can try to execute your servlet
after activate your registry via LocateRegistry.createRegistry(int port)
Hope this help
Similar Messages
-
How can i Use SERVLET with RMI to avoid trust certificate
I know that for begining RMI, you must launch the server and the client.
for the server i use :
java -Djavax.net.ssl.trustStore=server.keystore -Djavax.net.ssl.keyStore=server.keystore -Djavax.net.ssl.keyStorePassword=server TestServer
for the client I use :
java -Djavax.net.ssl.trustStore=client.keystore -Djavax.net.ssl.keyStore=client.keystore -Djavax.net.ssl.keyStorePassword=client TestClient
and all work fine.
but i want to use a servlet for rmi client and i wrote this:
public class AppelServlet extends HttpServlet
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
try
System.out.println("Registering secure RMI socket factory ...");
java.rmi.server.RMISocketFactory.setSocketFactory(new SecureRMISocketFactory());
TestRemote test = (TestRemote) Naming.lookup("rmi://127.0.0.1:7123/TestClient");
String reponse=test.toLowerCase("HELLO WORLD");
System.out.println("la reponse est : "+reponse);
catch (Exception e)
System.out.println("test client exception: " +e);
PrintWriter out = response.getWriter();
response.setContentType("text/html");
and i have the following error on tomcat:
Registering secure RMI socket factory ...
test client exception: java.rmi.ConnectIOException: error during JRMP connection
establishment; nested exception is:
javax.net.ssl.SSLHandshakeException: Couldn't find trusted certificate
i think i must precise how to indicate the truststore like in the first case.
help me please.
hamdiHi,
Try doing the following steps.
Assuming you have a certificate obtained
Export the certificate into a .cer file.
On IE, goto tools->internet options->content->certificates, and export to a .cer file.
Using keytool of java import the certificate to the store that can be used doing the following command.
keytool -import -alias <ailas> -file < .cer filename> -keystore <storename here>
set the javax.net.ssl.trustStore and javax.net.ssl.trustStorePassword properties at the command prompt using the command below.
java -Djavax.net.ssl.trustStore=<storename> -Djavax.net.ssl.trustStorePassword=<password> <classname>
Let me know if this helped.
Also take a look at this link for using RMI with SSL
http://java.sun.com/products/jdk/1.2/docs/guide/rmi/SSLInfo.html
Regards,
Roopasri Vittal
Developer Technical Support
Sun Microsystems
http://sun.com/developers/support -
Urgent - Servlet with Property file
Hi all,
I have a servlet which ueses a property file to get the Database information such as Driver, URL etc. The content of the property file is
dbDriver=sun.jdbc.odbc.JdbcOdbcDriver
dbDSN=jdbc:odbc:Sundar
dbUser=
dbPassword=
The servlet has the following code to get connection with the DB
Connection con;
Statement stmt;
String s = null;
String dbDriver="";
String dbDSN="";
String dbUser="";
String dbPassword="";
public void init()
try {
String propsfilename = "db.props";
InputStream is = getClass().getResourceAsStream("/" + propsfilename);
Properties p = new Properties();
p.load(is);
dbDriver = p.getProperty("dbDriver");
dbDSN = p.getProperty("dbDSN");
dbUser = p.getProperty("dbUser");
dbPassword = p.getProperty("dbPassword");
} catch (Exception e) {
throw new RuntimeException("UNABLE TO INITIALIZE, EXITING...");
public String DataBaseConnection()
init();
try
Class.forName(dbDriver);
con = DriverManager.getConnection(dbDSN,dbUser,dbPassword);
stmt = con.createStatement();
catch (ClassNotFoundException e1)
e1.printStackTrace();
catch (SQLException e2)
e2.printStackTrace();
The following exception is thrown when i access the servlet through the browser.
java.lang.ClassNotFoundException: sun/jdbc/odbc/JdbcOdbcDriver
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:120)
at DataTrans.DataBaseTrans.DataBaseConnection(DataBaseTrans.java:52)
at sitespider.searchlinks(sitespider.java:207)
at sitespider.doGet(sitespider.java:42)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
at allaire.jrun.servlet.JRunSE.service(../servlet/JRunSE.java:1013)
at allaire.jrun.servlet.JRunSE.runServlet(../servlet/JRunSE.java:925)
at allaire.jrun.servlet.JRunNamedDispatcher.forward(../servlet/JRunNamedDispatcher.java:34)
at allaire.jrun.servlet.Invoker.service(../servlet/Invoker.java:84)
at allaire.jrun.servlet.JRunSE.service(../servlet/JRunSE.java:1013)
at allaire.jrun.servlet.JRunSE.runServlet(../servlet/JRunSE.java:925)
at allaire.jrun.servlet.JRunRequestDispatcher.forward(../servlet/JRunRequestDispatcher.java:88)
at allaire.jrun.servlet.JRunSE.service(../servlet/JRunSE.java:1131)
at allaire.jrun.servlet.JvmContext.dispatch(../servlet/JvmContext.java:330)
at allaire.jrun.jrpp.ProxyEndpoint.run(../jrpp/ProxyEndpoint.java:382)
at allaire.jrun.ThreadPool.run(../ThreadPool.java:272)
at allaire.jrun.WorkerThread.run(../WorkerThread.java:75)
I am using the following servers
IIS 5.0 with JRun 3.1
Adv tanx
SundarHi
I tested your code . The problem is that the property file have some spaces after the string. Use The trim(); function or check the blank spaces in the property file.
hope it will help
Mallesh -
Applet-Servlet with RMI or HTTP? : for a web based network monitoring tool.
Hi,
I need help to make a decision to choose an implementation technique for a tool that I am creating.
I am creating a utility to display a table of RX and TX bandwidth information in real time from a network device X
onto a client's web browser.
I have a JTable based applet to display bandwidth information. However I am running this as a standalone applet. I want
to create a web based solution (applet/servlet model) to make life easier for the end user.
As for displaying the bandwidth information, I am using Runtime.exec() function to remote execute commands using ssh/rsh.
This not only seems to impose a lot of process and network latency overhead, but also seems impractical from a
security point of view, hence I need a real client/server model to have efficient and secure serialized data transfer across
the network (through HTTP etc) between the client's web browser and X.
X has a web server running on it. It essentially is a Linux box (CentOS). I can create a JNLP definition to launch an applet
from X onto a remote client's web browser. The real problem is: what is the most efficient way to go about the
servlet implementation? Is it wise to use HTTP get/post? or RMI is the way to go?
Also I'd appreciate suggestion on any different approaches than what I have in mind above.
Thanks,
RajivThanks for your time, but I cannot make a front-end in C. It has to be in JSP (or in ASP but I haven't tried yet to program in VBA).
So that is why I am asking what is the best way of attaching a JSP front-end to the given API.
PS: Why should I code a .dll to provide a JNI interface for the api? Isn't the JNI interface capable of doing such? -
Applet-Servlet or RMI - which is better
We are in the process of developing a swing-applet based system that requires regular interaction with multiple databases residing on more than one database server.
The options available before us, as we evaluate are:
a. Use "signed" applets ( as this is going to be essentially an intra-net application) and use JDBC connection to connect to more than one database ( which reside on servers other than the web server).
b. Use applet - servlet communication - basically, the servlet would establish connection to the databases, directly or through EJB, retrieve necessary database information and pass on the objects to the applet - the front end GUI would be controlled by the applet.
c. Use RMI
We would like to have your perspective of the three options, with your experience in this line.
The questions that come to us are:
a. If the system is essentially an intra-net application, is it okay to design with "signed" applet mechanism - how far is this method common in the market and acceptable to the clients? Is it true that the signed applet would be able to establish connection to various "identified servers" that are allowed permissions in the security file?
b. Between applet-servlet and RMI, which is a better method? What should be the factors that need to be considered? Is RMI being widely used or should we be thinking in terms of EJB, eventhough the current project is purely a Java based solution.
Your input is highly appreciated - thanking in advance for any suggestions and inputs that you may provide.
Thanks
DixieDixie,
1) IMHO signed applets are not widely used, but you can use
ordinary applets, which are accessing other resources through
redirector servlet on server side - I mean ordinary applets
are prohibited to establish connect to other than it's own server.
So you will be forced to have special servlet on your server,
which have access to other resources on other servers - this is a
way how to avoid applets limitation.
2) RMI is a heavy solution, because all parameters/objects should
be serialized over net and if network connection is unreliable
working with system will be just a nighmare.
3) If you think that your network connection is unreliable, you can use HTTP protocol between client and server instead of RMI. In this case
you will have following benefits:
i) You can still use all of powerness of thick client
ii) Network unreliability will be defeated
iii) Sometime if you would like to port your application to a thin
client it will be done much more easier than in case of RMI
4) If you would like to use thin client your only problem will
be poorness of UI - if you can go with it - go ahead! Otherwise
use thick client with RMI or HTTP depending on quality of network.
Paul -
How can i deploy a servlet with eclispe
Hello,
will any one of u give me the steps to deploy a servlet with eclipse on portal server(J2EE Engine),
in help of eclipse they given as, whole webapplication deployement, but that is also giving me a error, the procedure they given is, once we created a .war file for our servlet project we need to refer this to a .Ear file, and then this Ear can be deployed in to the server. Is it the same and only procedure to deploy a servlet with eclipse, or if there is any other method,please give me the steps also.
when i am deploying with the .Ear file, it is giving the error as,
Jun 4, 2005 11:34:31 AM /userOut/deploy (com.sap.ide.eclipse.sdm.threading.DeployThreadManager) [Thread[Deploy Thread,5,main]] ERROR:
[001]Deployment aborted
Deployment exception : Cannot determine sdm host (is empty). Please configure your engine/sdm correctly !
but the sdm is working on the server with the same host, and local deployement is also done successfully, but from my system im not able to deploy!
Thanks&Regards,
Sireesha.Yeah, i am able to see the J2EE engine clusters, there the message server port is given as 3601. becoz scs instance number is 1 here. so it is not the problem,
the error it is giving as,
Jun 6, 2005 11:37:28 AM /userOut/deploy (com.sap.ide.eclipse.sdm.threading.DeployThreadManager) [Thread[Deploy Thread,5,main]] ERROR:
[001]Deployment aborted
Settings
SDM host : obtdev9
SDM port : 50018
URL to deploy : file:/C:/DOCUME1/sireesha.b/LOCALS1/Temp/temp56446MyServletEAR.ear
Deployment exception : Server obtdev9 did not accept login request as apiadmin on port 50018 - CmdXmlFactory could not find Top Element within String: "null".
Inner exception was :
Server obtdev9 did not accept login request as apiadmin on port 50018 - CmdXmlFactory could not find Top Element within String: "null".
is this may be the problem with port number?
i am not knowing what is happening here...
if you know the exact error based on the error messgae please help me,
thanks to u for helping in this problem,
Regards,
sireesha. -
URGENT Problem with Greek Character from an Oracle database
Hello, I am having a serious and urgent problem with the character settings of an oracle database (8.1.7). The database is sitting in a solaris unix server and when we run the env command we have the following in the NLS_LANG parameter: AMERICAN_AMERICA.WE8ISO8859P1 (I do not know if this is helpful). When I retrieve data from oracle database (through a VB.NET 2005 program)to a dataset I use a special font in order to see the greek characters (HELLASARIAL). But when I am trying to save these data to a TXT file the greek characters are like Chinese to us. I tried several encodings (System.Text.Encoding.GetEncoding(869)) but without success. Can someone tell me how to convert the oracle greek characters during the selection or during the saving to the TXT file?
Please respond as fast as you can.
Thanks in advanceHere is the answer of the microsoft:
I have the information that you have a VB.Net 2005 application connected to an Oracle database 8.1.7.4 hosted on a UNIX server.
This database has the CharacterSet WE8ISO8859P1.
When retrieving Greek characters from this database in the application, you cannot see them.
Could you please send me a screenshot of these characters in the .Net application?
Are they displayed as gibberish, or as inverted questions marks (?)?
I already had similar cases with Hebrew characters hosted on an Oracle database.
These characters were displayed as questions marks on the client side.
This is due to the fact that System.Data.OracleClient is using the Server CharacterSet to display the characters.
If your Greek characters are not stored in the WE8ISO8859P1 characterset, then they won’t display correctly on the client-side.
This is different from OLEDB where you could interact on client side by modifying the NLS_LANG parameter in the registry HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0.
The client NLS_LANG and the server CharacterSet had to match in order to correctly display the data, and avoid SQL*NET conversion.
So there are two solutions to your case:
- The first one is to create a new database using the P8 characterset. The Oracle .Net managed provider will so be able to use it and display the characters correctly.
- The second one is to use the OLEDB.Net managed provider, and then use OLEDB for Oracle provider. OLEDB will take care of the client NLS_LANG registry parameter.
Would it be possible to test your application against an Oracle database with WE8ISO8859P8 characterset?
Would it be possible to test it with the OLEDB .Net managed provider, and after checking the NLS_LANG client registry parameter? -
How to upload a file into server using j2ee jsp and servlet with bean?
How to upload a file into server using j2ee jsp and servlet with bean? Please give me the reference or url about how to do that. If related to struts is more suitable.
Anyone help me please!u don't need j2ee and struts to do file uploading. An example is as such
in JSP. u use the <input> file tag like
<input type="file"....>You need a bean to capture the file contents like
class FileUploadObj {
private FormFile srcFile;
private byte[] fileContent;
// all the getter and setter methods
}Then in the servlet, you process the file for uploading
* The following loads the uploaded binary data into a byte Array.
FileUploadObj form = new FileUploadObj();
byte[] byteArr = null;
if (form.signFile != null) {
int filesize = form.srcFile.getFileSize();
byteArr = new byte[filesize];
ByteArrayInputStream bytein = new ByteArrayInputStream (form.srcFile.getFileData());
bytein.read(byteArr);
bytein.close();
form.setFileContent(byteArr);
// Write file content using Writer class into the destination file in the server.
... -
Hi All, we have very urgent issue with intrastat report ''VE01''.
There is many documents with error Log-''The statistical value of the document item is zero.''.
The pricing settings looks OK and its impossible to
correct those documents with error.
Any Idee how I could correct them for them to get the green status?
Points will be added if helpful
Thanks and regards
LuisHello Luis,
please check the VBRP-BRTWR. If this fiels is zero then you get an entry in the incompletion log.
the message could be also occur if the GRWR is zero.
Please check your pricing setting.
Hope this will help to solve the problem.
I f you are satisfied with the answer, please don't forget to give Reward Points.
regards
Claudia -
How to pass parameters to servlet with POST with Business Service OSB
Hi all.
I am newby in OSB. I am trying to send some values through a POST call to a servlet. I know how to call the servlet with Business Service of type "Messaging Service". I send the parameters of type Text.
I have tried several ways, but I don`t find the proper way yo do it. I have tried to insert the param into the body and into the header.
The problem is that I don`t know exactly where to put them, I don`t know if it must be done in the header or in the boy. I neither don`t know if there is a common way to do this.
Please, could you give me a good example of an insert activity to isert a post parameter inside the call?
For example: now I am using this one:
Expression => "accountType=test"
Location => as first child of"
XPATH => empty.
In variable => body.
Where do I have to insert this, in the body or in the outbounds?
I have followed this posts:
https://blogs.oracle.com/jeffdavies/entry/enhanced_rest_support_in_oracl
http://www.yenlo.nl/en/using-osb-with-rest/
Thanks a lot.Hi,
Please be carefull about passing values such as Strings or number that contains ',' .
using the way described above.
the best way is to pass an ID and then use a select Statement to get the other Values in the target page.
regards
MDK. -
Messed up response to calls to same servlet with different parameters
Hi,
I am facing a very strange problem on our production server which is a tomcat 3.2.3 and mod-jk . We have a servlet that recieves a couple of parameters and returns the page contents based on those parameters. Now, if two users call the servlet with their own (different) parameters, sometime the result for one user goes to another one and vice versa.
For example, if user 1 calls :
http://www.mydomain.com/servlet/DynamicPageBuild?siteID=577&categoryID=69&catName=
and user 2 calls (note the difference in parameters) :
http://www.mydomain.com/servlet/DynamicPageBuild?siteID=781&categoryID=54&catName=
SOMETIMES the result of first request ends up going to user 2's browser or vice versa!
Anyone PLEASE any ideas of why this is happening?When this happens there are two threads in the servlet container, and both of them are (simultaneously) running the same instance of the servlet. So if your servlet has instance variables, both threads (the two users) are accessing and changing the same instance variables... remember, there's only one instance of the servlet.
So if you change your servlet logic to use local variables (the ones declared inside a method) instead of instance variables, that would probably solve your problem (although it could be more complicated than that). Each thread would have its own copy of the local variables, and there would be no conflict. -
VersioningError when Using JDBC driver for SQL Server with RMI
Hi,
I wrote a simple class for inserting rows into a database. The database is SQL Server 2000, and I am using weblogic's mssqlserver4 driver. The class works fine, but when I try to export the class as a remote object (using Sun's RMI implementation, not Weblogic RMI), I get the following error:
Exception in thread "main" weblogic.common.internal.VersioningError: No WebLogic packages defined in CLASSPATH at weblogic.common.internal.VersionInfo.<init>(VersionInfo.java:35) at weblogic.version.<clinit>(version.java:18)
at weblogic.jdbc.common.internal.FileProxy.initFileHandles(FileProxy.java:30) at weblogic.jdbc.mssqlserver4.BaseConnection.prepareConnection(BaseConnection.java:215)
at weblogic.jdbc.mssqlserver4.Driver.newConnection(Driver.java:34) at weblogic.jdbc.mssqlserver4.ConnectDriver.connect(ConnectDriver.java:151) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:171)
Can anyone tell me why this happens? What is difference between using the driver standalone and using it with RMI? Does it have anything to do with the fact that I'm using Javasoft RMI and not Weblogic RMI? I'm pretty sure I have the classpaths set up correctly.
Thanks,
BoBo Min Jiang wrote:
Hi,
I wrote a simple class for inserting rows into a database. The database is SQL Server 2000, and I am using weblogic's mssqlserver4 driver. The class works fine, but when I try to export the class as a remote object (using Sun's RMI implementation, not Weblogic RMI), I get the following error:
Exception in thread "main" weblogic.common.internal.VersioningError: No WebLogic packages defined in CLASSPATH at weblogic.common.internal.VersionInfo.<init>(VersionInfo.java:35) at weblogic.version.<clinit>(version.java:18)
at weblogic.jdbc.common.internal.FileProxy.initFileHandles(FileProxy.java:30) at weblogic.jdbc.mssqlserver4.BaseConnection.prepareConnection(BaseConnection.java:215)
at weblogic.jdbc.mssqlserver4.Driver.newConnection(Driver.java:34) at weblogic.jdbc.mssqlserver4.ConnectDriver.connect(ConnectDriver.java:151) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:171)
Can anyone tell me why this happens? What is difference between using the driver standalone and using it with RMI? Does it have anything to do with the fact that I'm using Javasoft RMI and not Weblogic RMI? I'm pretty sure I have the classpaths set up correctly.
Thanks,
BoHi. Show me the whole stacktrace of the exception. The issue seems to be the driver licensing
code, which is looking for the bea.license file, and not finding it. Have your code run a System command
to find and print out the classpath it thinks is in effect. You will then see if the license file is there.
Joe -
Hi,
I have a question on using EJB / or RMI servers with CORBA clients using
RMI-IIOP transport, which in theory should work, but in practice has few
glitches.
Basically, I have implemented a very simple server, StockTreader, which
looks up for a symbol and returns a 'Stock' object. In the first example, I
simplified the 'Stock' object to be a mere java.lang.String, so that lookup
would simply return the 'synbol'.
Then I have implemented the above, as an RMI-IIOP server (case 1) and a
CORBA server (case 2) with respective clients, and the pair of
client-servers work fine as long as they are CORBA-to-CORBA and RMI-to-RMI.
But the problem arises when I tried using the RMI server (via IIOP) with the
CORBA client, when the client tries to narrow the object ref obtained from
the naming service into the CORBA idl defined type (StockTrader) it ends up
with a class cast exception.
This is what I did to achieve the above results:
[1] Define an RMI interface StockTrader.java (extending java.rmi.Remote)
with the method,
public String lookup( String symbol) throws RMIException;
[2] Implement the StorckTrader interface (on a PortableRemoteObject derived
class, to make it IIOP compliant), and then the server to register the stock
trader with COS Naming service as follows:
String homeName =....
StockTraderImpl trader =new StockTraderImpl();
System.out.println("binding obj <" homeName ">...");
java.util.Hashtable ht =new java.util.Hashtable();
ht.put("java.naming.factory.initial", args[2]);
ht.put("java.naming.provider.url", args[3]);
Context ctx =new InitialContext(ht);
ctx.rebind(homeName, trader);
[3] Generate the RMI-IIOP skeletons for the Implementation class,
rmic -iiop stock.StockTraderImpl
[4] generate the IDL for the RMI interface,
rmic -idl stock.StockTraderImpl
[5] Generate IDL stubs for the CORBA client,
idlj -v -fclient -emitAll StockTraderImpl.idl
[6] Write the client to use the IDL-defined stock trader,
String serverName =args[0];
String symList =args[1];
StockClient client =new StockClient();
System.out.println("init orb...");
ORB orb =ORB.init(args, null);
System.out.println("resolve init name service...");
org.omg.CORBA.Object objRef
=orb.resolve_initial_references("NameService");
NamingContext naming =NamingContextHelper.narrow(objRef);
... define a naming component etc...
org.omg.CORBA.Object obj =naming.resolve(...);
System.out.println("narrow objRef: " obj.getClass() ": " +obj);
StockTrader trader =StockTraderHelper.narrow(obj);
[7] Compile all the classes using Java 1.2.2
[8] start tnameserv (naming service), then the server to register the RMI
server obj
[9] Run the CORBA client, passing it the COSNaming service ref name (with
which the server obj is registered)
The CORBA client successfully finds the server obj ref in the naming
service, the operation StockTraderHelper.narrow() fails in the segment
below, with a class cast exception:
org.omg.CORBA.Object obj =naming.resolve(...);
StockTrader trader =StockTraderHelper.narrow(obj);
The <obj> returned by naming service turns out to be of the type;
class com.sun.rmi.iiop.CDRInputStream$1
This is of the same type when stock trader object is registered in a CORBA
server (as opposed to an RMI server), but works correctly with no casting
excpetions..
Any ideas / hints very welcome.
thanks in advance,
-hariOn the contrary... all that is being said is that we needed to provide clearer examples/documentation in the 5.1.0 release. There will be no difference between the product as found in the service pack and the product found in the 5.1.1. That is, the only substantive will be that 5.1.1 will also
include the examples.
"<=one way=>" wrote:
With reference to your and other messages, it appears that one should not
expect that WLS RMI-IIOP will work in a complex real-life system, at least
not now. In other words, support for real-life CORBA clients is not an
option in the current release of WLS.
TIA
"Eduardo Ceballos" <[email protected]> wrote in message
news:[email protected]...
We currently publish an IDL example, even though the IDL programmingmodel in Java is completely non-functional, in anticipation of the support
needs for uses who need to use IDL to talk to the Weblogic server,
generically. This example illustrates the simplest connectivity; it does not
address how
to integrate CORBA and EJB, a broad topic, fraught with peril, imo. I'llnote in passing that, to my knowledge, none of the other vendors attempt
this topic either, a point which is telling if all the less happy to hear.
For the record then, what is missing from our distribution wrt RMI-IIOPare a RMI-IIOP example, an EJB-IIOP example, an EJB-C++. In this you are
correct; better examples are forth coming.
Still, I would not call our RMI-IIOP implementation fragile. I would saythat customers have an understandably hard time accepting that the IDL
programming model is busted; busted in the sense that there are no C++
libraries to support the EJB model, and busted in the sense that there is
simply no
support in Java for an IDL interface to an EJB. Weblogic has nothing to doit being busted, although we are trying to help our customers deal with it
in productive ways.
For the moment, what there is is a RMI (over IIOP) programming model, aninherently Java to Java programming model, and true to that, we accept and
dispatch IIOP request into RMI server objects. The way I look at it is this:
it's just a protocol, like HTTP, or JRMP; it's not IDL and it has
practically nothing to do with CORBA.
ST wrote:
Eduardo,
Can you give us more details about the comment below:
I fear that as soon as the call to narrow succeeds, the remainingapplication will fail to work correctly because it is too difficult ot
use an idl client in java to work.It seems to me that Weblogic's RMI-IIOP is a very fragile
implementation. We
don't need a "HelloWorld" example, we need a concrete serious example(fully
tested and seriously documented) that works so that we can get a betteridea
on how to integrate CORBA and EJB.
Thanks,
Said
"Eduardo Ceballos" <[email protected]> wrote in message
news:[email protected]...
Please post request to the news group...
As I said, you must separate the idl related classes (class files and
java
files) from the rmi classes... in the rmic step, you must set a newtarget
(as you did), emit the java files into that directory (it's not clearyou
did this), then remove all the rmi class files from the class path... ifyou
need to compile more classes at that point, copy the java files to theidl
directly is you must, but you can not share the types in any way.
I fear that as soon as the call to narrow succeeds, the remainingapplication will fail to work correctly because it is too difficult otuse
an idl client in java to work.
Harindra Rajapakshe wrote:
Hi Eduardo,
Thanks for the help. That is the way I compiled my CORBA client, by
separating the IDL-generated stubs from the RMI ones, but still I
get a
CORBA.BAD_PARAM upon narrowing the client proxy to the interfacetype.
Here's what I did;
+ Define the RMI interfaces, in this case a StockTrader interface.
+ Implement RMI interface by extendingjavax.rmi.PortableRemoteObject
making
it IIOP compliant
+ Implemnnt an RMI server, and compile using JDK1.2.2
+ use the RMI implementation to generate CORBA idl, using RMI-IIOPplugin
utility rmic;
rmic -idl -noValueMethods -always -d idl stock.StockTraderImpl
+ generate Java mappings to the IDL generated above, using RMI-IIOPplugin
util,
idlj -v -fclient -emitAll -tf src stocks\StockTrader.idl
This creates source for the package stock and also
org.omg.CORBA.*
package, presumably IIOP type marshalling
+ compile all classes generated above using JDK1.2.2
+ Implement client (CORBA) using the classes generated above, NOTthe
RMI
proxies.
+ start RMI server, with stockTrader server obj
+ start tnameserv
+ start CORBA client
Then the client errors when trying to narrow the obj ref from the
naming
service, into the CORBA IDL defined interface using,
org.omg.CORBA.Object obj =naming.resolve(nn);
StockTrader trader =StockTraderHelper.narrow(obj); // THIS
ERRORS..!!!
throwing a CORBA.BAD_PARAM exception.
any ideas..?
Thanks in advance,
-hari
----- Original Message -----
From: Eduardo Ceballos <[email protected]>
Newsgroups: weblogic.developer.interest.rmi-iiop
To: Hari Rajapakshe <[email protected]>
Sent: Wednesday, July 26, 2000 4:38 AM
Subject: Re: problem using CORBA clients with RMI/EJBservers..!!!???
Please see the post on june 26, re Errors compiling... somewherein
there,
I suspect, you are referring to the rmi class file when you are
obliged
to
completely segregate these from the idl class files.
Hari Rajapakshe wrote:
Hi,
I have a question on using EJB / or RMI servers with CORBA
clients
using
RMI-IIOP transport, which in theory should work, but in practice
has
few
glitches.
Basically, I have implemented a very simple server,
StockTreader,
which
looks up for a symbol and returns a 'Stock' object. In the firstexample, I
simplified the 'Stock' object to be a mere java.lang.String, so
that
lookup
would simply return the 'synbol'.
Then I have implemented the above, as an RMI-IIOP server (case
1)
and a
CORBA server (case 2) with respective clients, and the pair of
client-servers work fine as long as they are CORBA-to-CORBA andRMI-to-RMI.
But the problem arises when I tried using the RMI server (via
IIOP)
with
the
CORBA client, when the client tries to narrow the object ref
obtained
from
the naming service into the CORBA idl defined type (StockTrader)
it
ends
up
with a class cast exception.
This is what I did to achieve the above results:
[1] Define an RMI interface StockTrader.java (extending
java.rmi.Remote)
with the method,
public String lookup( String symbol) throws RMIException;
[2] Implement the StorckTrader interface (on a
PortableRemoteObject
derived
class, to make it IIOP compliant), and then the server to
register
the
stock
trader with COS Naming service as follows:
String homeName =....
StockTraderImpl trader =new StockTraderImpl();
System.out.println("binding obj <" homeName ">...");
java.util.Hashtable ht =new java.util.Hashtable();
ht.put("java.naming.factory.initial", args[2]);
ht.put("java.naming.provider.url", args[3]);
Context ctx =new InitialContext(ht);
ctx.rebind(homeName, trader);
[3] Generate the RMI-IIOP skeletons for the Implementation
class,
rmic -iiop stock.StockTraderImpl
[4] generate the IDL for the RMI interface,
rmic -idl stock.StockTraderImpl
[5] Generate IDL stubs for the CORBA client,
idlj -v -fclient -emitAll StockTraderImpl.idl
[6] Write the client to use the IDL-defined stock trader,
String serverName =args[0];
String symList =args[1];
StockClient client =new StockClient();
System.out.println("init orb...");
ORB orb =ORB.init(args, null);
System.out.println("resolve init name service...");
org.omg.CORBA.Object objRef
=orb.resolve_initial_references("NameService");
NamingContext naming=NamingContextHelper.narrow(objRef);
... define a naming component etc...
org.omg.CORBA.Object obj =naming.resolve(...);
System.out.println("narrow objRef: " obj.getClass() ":"
+obj);
StockTrader trader =StockTraderHelper.narrow(obj);
[7] Compile all the classes using Java 1.2.2
[8] start tnameserv (naming service), then the server to
register
the
RMI
server obj
[9] Run the CORBA client, passing it the COSNaming service ref
name
(with
which the server obj is registered)
The CORBA client successfully finds the server obj ref in the
naming
service, the operation StockTraderHelper.narrow() fails in thesegment
below, with a class cast exception:
org.omg.CORBA.Object obj =naming.resolve(...);
StockTrader trader =StockTraderHelper.narrow(obj);
The <obj> returned by naming service turns out to be of the
type;
class com.sun.rmi.iiop.CDRInputStream$1
This is of the same type when stock trader object is registeredin a
CORBA
server (as opposed to an RMI server), but works correctly with
no
casting
excpetions..
Any ideas / hints very welcome.
thanks in advance,
-hari -
Servlet with Database Access!!!
Hi !!!!
I have deployed HelloServlet with Oracle Application Server 4.0.8.1.
Now I want to connect from Servlet to Oracle8i 8.1.5.
But, when I try to deploy a Servlet with Database Access, I receive the next:
"Get operation not allowed"
The URL used is:
http://host.domain:port/virtual_path/class_name
The servlet was compiled using the Sun's jdk from command line. There wasn't compilation errors.
I run a simple application with database access from command line without problems.
The drivers and JDBC libraries are operating for this simple application.
Any help will be appreciated.
Many thanks
SergioIf you are running OAS 4.0.8.1 and Oracle 8.1.5 on the same machine then this could be the problem. These products are not certified to run on the same machine as they give a path conflict.
Hope this helps. -
How to activate / disactivate a servlet with a java client ?
I would like to know how to activate or disactivate a servlet with a java client or an applet ?
Thanks...What does "activate" mean for servlets?
Maybe you are looking for
-
Can somebody please advise urgently... I backed up my entire hard-drive of my macbook pro - just prior to installing osx mountain lion. I put everything into a folder on my desktop - then backed it up onto an external drive. Once this was done - i de
-
Load remote images in html mail setting does not get saved. I have to turn it off every time I log in. Is this a bug?
-
I am trying to imbed a formula that will look pull in the current date, then subtract 91 days from it. I am wondering if anyone can help me with it? Tried: timestampadd(SQL_TSI_DAY, -91,Date) ADDDATE(CURRENT_DATE, INTERVAL 91 DAY); Thanks,
-
Hi there I'm not sure if anyone has reported this before or if there is a fix already but I could not find anything about it anywhere. Basically once you install UE-V 2.0 and you use the default Microsoft templates, when you double click an excel spr
-
Change Number (due to harassment)?
Hello, It appears that my online number is the victim of a student prank. I used this number for quite some time with Skype without any problems, but it appears a former student (you can guess how well they did in the class) is now contacting a redi