Tuxedo service as CORBA client
Hi all-
Just want to confirm my approach on something. I have a Tux (8.1) service that
needs to call out to a CORBA object for some of it's processing. I think I need
to:
- Generate client stubs from the provided IDL using Tux provided 'idl' command.
- In my tpsvrinit(), Perform the ORB initialization using the Tux provided ORB,
i.e., CORBA::ORB_var var_orb = CORBA::ORB_init(argc, argv, "");, then resolve
initial references to a CosNamingService using the TP::bootstrap object and then
use this to look up and narrow my remote object reference. The key here being
that I use a federated CosNamingService (not just the local Tux).
- In my service, use my object reference to make calls.
- In my tpsvrdone, release my object reference and gracefully shutdown my ORB
connection.
Is this about right?
Question - do I need to run an instance of TMFFNAME to make this work?
Thanks,
Rick
Hi Rick,
Signals shouldn't be a problem if you are simply a client to a remote ORB (even if the client is operating in the context of a server since any signals involved would be the problem of the remote ORB.) There are issues in general with signals, but the documentation should describe those. In some cases you may need to use a Tuxedo provided function for registering your own signal handler(s). The only other "issue" might be that you need to call C++ code from C as we only support the OMG C++ bindings and not the C bindings.
As for compatibilty issues, we will try to address any that can be identified, although in general we will make sure our implementation complies with the OMG specifications. The areas that have tended to be problematic with other ORBs (usually because of their broken implementation) have been around wide characters and codeset negotiation, valuetypes (lots of ORBs have had marshalling issues with these), and sometimes GIOP versioning issues and alignment.
Regards,
Todd
>
Hi Todd-
Thanks for responding.
The CORBA server is remote - in fact, a different ORB
vendor (still trying to
find out which one). And it looks like I might be
getting stringified IORs to
use instead of a naming service.
So as a follow up:
- Is there anything to be wary of trying to call a
remote CORBA server from within
my Tux server? Signals or other things?
- Are there any known compatibility issues with the
Tuxedo ORB (the old DEC ORB
if memory serves me) and other current ORB
implementations?
Thx again,
Rick
"Todd Little" <[email protected]> wrote:
Hi Rick,
The approach sounds right, although I'm not certainwe support calling
a CORBA
server from an ATMI server. I couldn't find in aquick search of the
documentation
anything on this. You also didn't say whether theCORBA server is local
or remote.
As for TMFFNAME, that is only needed if you aregoing to use the FactoryFinder.
Regards,
Todd
"Rick Robinson" <[email protected]> wrote:
Hi all-
Just want to confirm my approach on something. I
have a Tux (8.1) service
that
needs to call out to a CORBA object for some ofit's processing. I
think
I need
to:
- Generate client stubs from the provided IDL using
Tux provided 'idl'
command.
- In my tpsvrinit(), Perform the ORB initializationusing the Tux provided
ORB,
i.e., CORBA::ORB_var var_orb =CORBA::ORB_init(argc, argv, "");, then
resolve
initial references to a CosNamingService using theTP::bootstrap object
and then
use this to look up and narrow my remote objectreference. The key
here
being
that I use a federated CosNamingService (not just
the local Tux).
- In my service, use my object reference to makecalls.
- In my tpsvrdone, release my object reference andgracefully shutdown
my ORB
connection.
Is this about right?
Question - do I need to run an instance of TMFFNAMEto make this work?
Thanks,
Rick
Similar Messages
-
How corba client and server find Naming service
hello
i want to ask how corba client and server find the Naming service ?
10xBy using a well-known port (I think the default for JavaIDL's NS is 1049) on a well-known address (localhost).
As these values are not really standard, you can specify them when starting the server and client (+-ORBInitialPort 1050 -ORBInitialHost localhost+). See the documentation . -
Tuxedo Service can not find a Jolt Client AFter timeout occured
We are using Java Servlet/Jolt client to access out backend
Tuxedo services.
Whenever a Tuxedo service timedout, like
"***tpcall failed |TPETIME - timeout occured|",
The Jolt client and Tuxedo services will be out of sync,
and Tuxedo Server will show following error message:
"JOLT_CAT:1518: "ERROR: Call handle and clientid have no matching requests".
Whenever this happends, we must reboot out Jolt client connection. Otherwise we
will keep geting above problem.
Our Jolt timeout time is 2 minutes. And Tuxedo block time is
1 min 30 sec. (We setip in our UBB config as
BLOCKTIME 9 #9*10s (def SCANUNIT)=90s or 1 min and 30s.).
It seems like Tuxedo service will be timeouted before Jolt timedout.
Could someone give us some suggestion about the above problem?
Thanks in advance!Which version of Jolt are you using? This problem seems to have been fixed in
latest rolling patch for Jolt1.2. Contact BEA support for it.
-Deepak
Yux71 wrote:
We are using Java Servlet/Jolt client to access out backend
Tuxedo services.
Whenever a Tuxedo service timedout, like
"***tpcall failed |TPETIME - timeout occured|",
The Jolt client and Tuxedo services will be out of sync,
and Tuxedo Server will show following error message:
"JOLT_CAT:1518: "ERROR: Call handle and clientid have no matching requests".
Whenever this happends, we must reboot out Jolt client connection. Otherwise we
will keep geting above problem.
Our Jolt timeout time is 2 minutes. And Tuxedo block time is
1 min 30 sec. (We setip in our UBB config as
BLOCKTIME 9 #9*10s (def SCANUNIT)=90s or 1 min and 30s.).
It seems like Tuxedo service will be timeouted before Jolt timedout.
Could someone give us some suggestion about the above problem?
Thanks in advance! -
Call of tuxedo workstation client to tuxedo service
In ubb file:
"WSL" SRVGRP="GRP" SRVID=44
CLOPT="-A -- -p 10002 -n //172.17.1.10:10001 -P 10003 -T 180"
My question is:
1. In workstation client, WSNADDR is //172.17.1.10:10001. If I use "172.17.1.10:10001", it prompts "TPESYSTEM - internal system error", while "//172.17.1.10:10001" is right?
2. 10001 is the port of WSL, 10002-10003 is the port of WSH. But in ubb file, I cannot find WSH configuration, is that right?
3. If "telnet 172.17.1.10 10002(/10003)" doesn't work in workstation client, does it impact the call of tuxedo service from this workstation client?
Thanks a lot.Bill,
1. Tuxedo syntax for specifying TCP/IP addresses requires that the address start with "//", so it is expected behavior for "172.17.1.10:10001" to result in an error and for "//172.17.1.10:10001" to be correctly parsed.
2. You're correct that the UBBCONFIG file does not include entries for WSH processes. WSH processes are started by the WSL as appropriate.
3. The Tuxedo WSH communicates with workstation clients and with the WSL using a proprietary Tuxedo workstation protocol. The WSH does not understand telnet protocol, so any attempt to telnet to the WSH port will not succeed.
Regards,
Ed -
Can a Tuxedo service send a message to itself?
Hello,
is it possible for a Tuxedo service to send a request to itself?
The scenario is this:
- The same Tuxedo service is provided by multiple processes (for scalability). The processes are single-threaded.
- While handling a request in a transaction (XA transaction is started outside the process), the service code determines that some cached data needs to be refreshed. This refresh needs to be done outside the current transaction.
- The service send an non-transactional async request to itself (the same process). [How?]
- The transactional request completes.
- The non-transactional request is handled and refreshes the cache.
- The next transactional request is handled (by the same process), and uses the refreshed cache data.
Is this possible? The challenge seems to be that the same process gets the non-transactional request. With multiple instances of the service, any instance could normally get the request (eg. when using tpacall()).
Thanks...
RogerHi Roger,
A couple of comments:
1) There isn't any standard way of forcing a request to go to a specific server when the service is offered by multiple servers. The traditional way of handling the need to make a request to a specific server is to explicitly advertise the service with a synonym name that is unique to the server. So to call the BAL service in a particular server with a PID of 1433, the server would advertise the BAL server as BAL_1433 or something similar, and then any requests that had to be made to that particular server would be made to BAL_1433 instead of BAL. Unfortunately this is rather cumbersome and doesn't scale particularly well. One feature we are adding to Tuxedo in an upcoming release is client server affinity. With this feature an application could specify that all requests are routed to the first server that handles a service. Thus subsequent requests that are made to services while in a "session" with the server would always be routed to that server. While this client/server affinity might be a solution in the future, it's not really designed for the scenario you mention, i.e., performing an asynchronous out of band request to the same server.
2) In your scenario under the point where you ask "how?", you could use the above approach, although the call would have to be a tpacall with TPNOTRAN set (which you already indicated) but would also have to set TPNOREPLY as it appears you are planning on performing a tpreturn before processing the asynch request.
3) Obviously another solution would be to make the server multi-threaded and handling the refresh of the cache in a separate thread and not use a tpcall/tpacall to initiate the cache refresh.
4) Although not likely to be an option, the Tuxedo CORBA infrastructure will support what you are trying to do. By activating an object in a process with a process activation policy, you could make a request to that object reference and be guaranteed the request would return to that same server.
5) Finally one other possible solution, although probably inelegant and may not scale as well would be to use data dependent routing and only have a single server offering the service in each group.
As an aside, we are planning on adding a distributed data caching mechanism to Tuxedo in a future release. Yeah, I know that doesn't help right now, but it is certainly something to look forward to! :-)
Regards,
Todd Little
Oracle Tuxedo Chief Architect -
Hi,
I would like to know more about to CORBA clients (C++ & Java) accessing EJBs
in the weblogic cluster. We have an EJB deployed in the weblogic cluster,
when we are trying to access that EJB through CORBA client (Visibroker 5.1
ORB), will it return me a replica aware stub or there is no Fault tolerant
for CORBA clients.
TIA,
VikasHi Andy,
Thanks for your reply.
We have been calling EJBs using CORBA, the clients we have tested are C++ &
Java clients. So I don't understand when you said Java doesn't work well due
to some limitations. We are using the Visibroker ORB at the client side.
Now as we move forward, we hit a wall as far as HA of the whole system is
concerned. Are you aware of somebody using J2EE & CORBA in HA environment?
Since we have some friends in house who are C++ geeks & we do have some
legacy C++ code too. As you mentioned Tuxedo ORB, is it a fully functional
ORB, which version of OMG specs it comply with?
What happens in case if we want to invoke CORBA service from our EJBs
deployed in the weblogic cluster? What are the issues we have in HA for this
scenario?
Thanks,
Vi
"Andy Piper" <[email protected]> wrote in message
news:[email protected]...
"Vikas Chawla" <[email protected]> writes:
I would like to know more about to CORBA clients (C++ & Java) accessing
EJBs
>
C++ works fine (we recommend you use the WebLogic C++ Client (Tuxedo
ORB) since its free and works well). Java does not work at all due to
limitations in the Java IDL mapping spec (i.e. does not work for any
Vendor). Java clients should always use RMI to access EJB's.
in the weblogic cluster. We have an EJB deployed in the weblogic
cluster,
when we are trying to access that EJB through CORBA client (Visibroker5.1
ORB), will it return me a replica aware stub or there is no Faulttolerant
for CORBA clients.Fault tolerance in WLS is client driven and thus there is no support
for it in foreign ORBs. The next release of the WebLogic C++ client
(part of Tux 8.1) includes fault-tolerance and load-balancing which
you can use against WLS. This product will be free to WLS
licencees. You could probably get hold of a beta of this product. It
would also to be possible to implement fault-tolerance using
interceptors if your ORB is spec compliant (we do this with the JDK
1.4 ORB) but you would need to go through your account rep in order to
get details of the IOR and Service Context formats.
HTH
andy -
Running a Corba Client as a Java Stored Procedure
Hi,
I�m trying to use a Java Stored Procedure running as a Corba Client. I want to use the built in Visibroker ORB on Oracle side and JacORB (or others) on the server side.
How can I init the ORB and get a naming service running not in Oracle but on the server side? Also which jar�s do I need to load into the db with (loadjava) to run the visibroker orb inside the Java Stored Procedure Client?
I�m using Oracle 8.1.7.
Thanks for help ;)By the way I�m using ORACLE 8.1.7.
-
Hi
I have a Tuxedo COBOL service and I have a problem: the TPSVCSTART routine it seams that not working very well.
When I start the service for the first time and I send some record to the TPSVCSTART service routine, everything goes fine. After the COBOL service is terminated (COPY TPRETURN...) and I try to connect to the service again, the VIEW record passed to the TPSVCSTART routine contains the data that I sent but contains also random chars in his string fields, although the record's string value fields and their lengths are correctly set on the client side.
Anyone knows why this is happening?
Code for the TPSVCSTART routine:
DO-TPSVCSTART.
INITIALIZE ClientData
MOVE "VIEW" TO REC-TYPE OF TPTYPE-REC.
MOVE "ClientData" TO SUB-TYPE OF TPTYPE-REC.
MOVE LENGTH OF CLIENT-DATA-REC TO LEN IN TPTYPE-REC.
CALL "TPSVCSTART" USING TPSVCDEF-REC
TPTYPE-REC
CLIENT-DATA-REC
TPSTATUS-REC.
IF TPTRUNCATE
MOVE "Input data exceeded DATA-REC length"
TO LOGMSG-TEXT
PERFORM DO-USERLOG
PERFORM EZ-EXIT.
IF NOT TPOK
MOVE "TPSVCSTART Failed" TO LOGMSG-TEXT
PERFORM DO-USERLOG
PERFORM EZ-EXIT.
IF REC-TYPE NOT = "VIEW"
MOVE "REC-TYPE is not VIEW" TO LOGMSG-TEXT
PERFORM DO-USERLOG
PERFORM EZ-EXIT.
Thanx
DanielRun the server manually using the command line from "tmboot -n -d1" and
see if it is dumping core or failing in some other manner.
Or if you already have a core file, get a stack trace with a debugger.
Paul van Rixel wrote:
Hi,
With version Tuxedo 6.4 I have a fmldef.fml with 472 entries. The number of views
is 121. So when I tried to add a service the tuxedo services will not start and
returns with an "CMDTUX_CAT:819 INFO: Process Id=.... assumed started (pipe)".
However, when I delete this service (or another one) the tmboot process does not
return an error and works fine.
So I wondered if there might be (default) value which I exceed. Anyone an idea?
Regards,
Paul -
CORBA client reconnection: InvalidDomain
I'm developing a CORBA-client for WLE 5.1. In short, the problem is:
I can't restore a connection after a COMM_FAILURE. When trying to create a Tobj_Bootstrap object again I get
com.beasys.Tobj.InvalidDomain: Can't connect to the domain (//my.domain:2600)
Here are some details. The client must work without restart during a long time. It is normal that sometimes network problems occur or server is restarted or any other thing happens that can make a remote object reference invalid. So, when getting a COMM_FAILURE, I try to "reconnect" - that is to obtain remote reference again. I do it in the same way as on the first start of the client:
1. Create Tobj_Bootstrap.
2. Obtain Factory Finder.
3. Obtain Factory.
4. Obtain remote interface reference.
On the first step I get this InvalidDomain exception. Even if the connection is OK, the server is up and running and the URL passed to Tobj_Bootstrap(orb, url) is correct. The other strange thing is - there is no network activity during this call (observed by network monitoring tool). Seems ORB doesn't really try to do its job.
BTW, I use m3envobj.jar and wleclient.jar for CORBA-functionality.
The same client using SUN's ORB (with simple CORBA-server from JDK 1.4) reconnects well.
What is the reason?
Thanks in advance.
Yury.Generally, no. If you carefully massage the IDL that results from the EJB, it's possible to manufacture a subset of the EJB's interface that a 2.2 or 2.1 ORB can call, but there is currently no automagical support for this in WLS. Beyond the use of value types, the trouble that most ORBs run into is
the IIOP type codes that start with RMI: instead of IDL:
Loaner wrote:
Hi,
I have a CORBA client developed on pre CORBA 2.3 ORB, i.e. the ORB
doesn't supports Object by Value. Can this client access the services
being provided by the EJB somehow??
Any help will be appreicated.
Vikas -
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 -
Passing data from jsp/servlet to a Tuxedo Service thru VIEW
Hi..
We are using Tuxedo10g R3 on AIX 5.3..
We have a Tuxedo Service running which takes values from the VIEW and converts that to upper case.. From the jsp page v r passing values to the VIEW fields which will be accepted by the service..
For testing v checked the service with a tuxedo client and it is working fine..
We have defined a jolt repository file for this service and finished bulkloading and coded the servlet also.. After passing the datas from the jsp, the Tuxedo service is called and it is ended.. but in the service only blank values are passed or the datas are not passed to VIEW fields.. It is not showing any error..
The repository file for this service:
service=NSIMPSRV
export=true
inbuf=VIEW
inview=sample
outbuf=STRING
param=FIRSTSTR
type=string
access=in
param=SECONDSTR
type=string
access=in
param=THIRDSTR
type=string
access=in
param=S-FIRST
type=string
access=out
param=S-SECOND
type=string
access=out
param=S-THIRD
type=string
access=out
and the servlet code for this service:
Result result1;
ServletSessionPool servletsession = (ServletSessionPool) joltsession.getSessionPool("demojoltpool");
ServletDataSet joltdataset = new ServletDataSet();
joltdataset.setValue("FIRSTSTR","Testing");
joltdataset.setValue("SECONDSTR","Tuxedo");
joltdataset.setValue("THIRDSTR","Views");
result1 = servletsession.call("NSIMPSRV", joltdataset, null);
System.out.println("FIRSTSTR:"+result1.getValue("S-FIRST",""));
System.out.println("SECONDSTR:"+result1.getValue("S-SECOND",""));
System.out.println("THIRDSTR:"+result1.getValue("S-THIRD",""));
we are not sure why the datas have not been passed.. do anyone have any idea regarding this??
Thanks..Hi Wayne,
This is my view definition:
VIEW sample
# type cname fbna count flag size null
string firststr - 1 - 10 -
string secondstr - 1 - 10 -
string thirdstr - 1 - 10 -
ENDJolt repository file:
service=NSIMPSRV
export=true
inbuf=VIEW
inview=sample
outbuf=VIEW
outview=sample
param=FIRSTSTR
type=string
access=inout
param=SECONDSTR
type=string
access=inout
param=THIRDSTR
type=string
access=inoutThe Servlet code is:
package Servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bea.jolt.pool.servlet.weblogic.PoolManagerStartUp;
import bea.jolt.pool.servlet.*;
import bea.jolt.pool.ApplicationException;
import bea.jolt.pool.SessionPoolException;
import bea.jolt.pool.ServiceException;
import bea.jolt.pool.SessionPoolManager;
import bea.jolt.pool.*;
* Servlet implementation class ZC00582Servlet
public class VIEWServlet extends HttpServlet {
private ServletSessionPoolManager joltsession = (ServletSessionPoolManager) SessionPoolManager.poolmgr;
public VIEWServlet() {
super();
// TODO Auto-generated constructor stub
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html");
ServletResult result;
Result result1;
String String1 = request.getParameter("FIRSTSTR");
String String2 = request.getParameter("SECONDSTR");
String String3 = request.getParameter("THIRDSTR");
System.out.println("THE VALUES BEFORE CONVERSION");
System.out.println("FIRSTSTR:"+String1);
System.out.println("SECONDSTR:"+String2);
System.out.println("THIRDSTR:"+String3);
System.out.println("1..");
//ServletResult message;
ServletSessionPool servletsession = (ServletSessionPool) joltsession.getSessionPool("demojoltpool");
System.out.println("2..");
ServletDataSet joltdataset = new ServletDataSet();
//joltdataset.importRequest(request);
System.out.println("3..");
//joltdataset.setValue("firststr","Hi");
joltdataset.setValue("firststr",String1);
System.out.println("4..");
//joltdataset.setValue("secondstr","hello");
joltdataset.setValue("secondstr",String2);
System.out.println("5..");
//joltdataset.setValue("thridstr","fine");
joltdataset.setValue("thirdstr",String3);
System.out.println("6..");
//result = (ServletResult) servletsession.call("NSIMPSRV", joltdataset, null);
result1 = servletsession.call("NSIMPSRV", joltdataset, null);
result = (ServletResult) result1;
System.out.println("THE VALUES AFTER CONVERSION");
System.out.println("FIRSTSTR:"+result.getStringValue("firststr",""));
System.out.println("SECONDSTR:"+result.getStringValue("secondstr",""));
System.out.println("THIRDSTR:"+result.getStringValue("thirdstr",""));
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
and my server program :
IDENTIFICATION DIVISION.
PROGRAM-ID. NSIMPSRV.
AUTHOR. TUXEDO DEVELOPMENT.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
* Tuxedo definitions
01 TPSVCRET-REC.
COPY TPSVCRET.
01 TPTYPE-REC.
COPY TPTYPE.
01 TPSTATUS-REC.
COPY TPSTATUS.
01 TPSVCDEF-REC.
COPY TPSVCDEF.
* Log message definitions
01 LOGMSG.
05 FILLER PIC X(10) VALUE
"NSIMPSRV :".
05 LOGMSG-TEXT PIC X(50).
01 LOGMSG-LEN PIC S9(9) COMP-5.
* User defined data records
01 STRING-DATA.
COPY SAMPLE.
LINKAGE SECTION.
PROCEDURE DIVISION.
START-FUNDUPSR.
MOVE LENGTH OF LOGMSG TO LOGMSG-LEN.
MOVE "Started" TO LOGMSG-TEXT.
PERFORM DO-USERLOG.
* Get the data that was sent by the client
MOVE LENGTH OF STRING-DATA TO LEN.
CALL "TPSVCSTART" USING TPSVCDEF-REC
TPTYPE-REC
STRING-DATA
TPSTATUS-REC.
IF NOT TPOK
MOVE "TPSVCSTART Failed" TO LOGMSG-TEXT
PERFORM DO-USERLOG
PERFORM EXIT-PROGRAM
END-IF.
IF TPTRUNCATE
MOVE "Data was truncated" TO LOGMSG-TEXT
PERFORM DO-USERLOG
PERFORM EXIT-PROGRAM
END-IF.
MOVE FIRSTSTR TO LOGMSG-TEXT.
PERFORM DO-USERLOG.
MOVE SECONDSTR TO LOGMSG-TEXT.
PERFORM DO-USERLOG.
MOVE THIRDSTR TO LOGMSG-TEXT.
PERFORM DO-USERLOG.
INSPECT FIRSTSTR CONVERTING
"abcdefghijklmnopqrstuvwxyz" TO
"ABCDEFGHIJKLMNOPQRSTUVWXYZ".
INSPECT SECONDSTR CONVERTING
"abcdefghijklmnopqrstuvwxyz" TO
"ABCDEFGHIJKLMNOPQRSTUVWXYZ".
INSPECT THIRDSTR CONVERTING
"abcdefghijklmnopqrstuvwxyz" TO
"ABCDEFGHIJKLMNOPQRSTUVWXYZ".
MOVE "Success" TO LOGMSG-TEXT.
PERFORM DO-USERLOG.
MOVE STRING-DATA TO LOGMSG-TEXT.
PERFORM DO-USERLOG.
SET TPSUCCESS TO TRUE.
COPY TPRETURN REPLACING
DATA-REC BY STRING-DATA.
* Write out a log err messages
DO-USERLOG.
CALL "USERLOG" USING LOGMSG
LOGMSG-LEN
TPSTATUS-REC.
* EXIT PROGRAM
EXIT-PROGRAM.
MOVE "Failed" TO LOGMSG-TEXT.
PERFORM DO-USERLOG.
SET TPFAIL TO TRUE.
COPY TPRETURN REPLACING
DATA-REC BY STRING-DATA.
Thanks & Regards,
Janani. -
Calling Tuxedo Service using BEA Jolt.
I'm trying to call Tuxedo service from java stored procedure using BEA JOLT.My normal java client works fine but when i use the same client as java stored procedure i get following error message :
can not connect to any //lucy:9021(host:port)
Reason:Nwhdlr:can not open socket
I've successfully loaded all required JOLT jar files using loadjava and created the procedure successfully .Java code is given below :
import bea.jolt.*;
import java.sql.*;
public class JoltToTux
public static void callTuxService() throws Exception
JoltSession session;
JoltSessionAttributes sattr;
JoltRemoteService toupper;
JoltTransaction trans;
String userName=null;
String userPassword=null;
String appPassword=null;
String userRole=null;
String outstr;
try {
sattr = new JoltSessionAttributes();
sattr.setString(sattr.APPADDRESS, "//lucy:9021");
sattr.setInt(sattr.IDLETIMEOUT, 300);
session = new JoltSession(sattr, userName, userRole,userPassword, appPassword);
toupper = new JoltRemoteService ("CB_EXESUB", session);
toupper.setString("CLFY_SUB", "PingSrvr");
toupper.call(null);
System.out.println( "Call to Tuxedo complete" );
outstr = toupper.getStringDef("WF_MESSAGE","" );
System.out.println("return string : " + outstr);
session.endSession();
System.exit(0);
} //end of try
catch (Exception e) {
// System.err.println(e.getMessage());}
e.printStackTrace();
} // end main
public static void main( String args[] ) {
try {
JoltToTux jt = new JoltToTux();
jt.callTuxService();
catch ( Exception e0 ) {
e0.printStackTrace();
} // end ToUpper
thanks
anuragAms,
You can't do that with JOLT. You will need to use the WTC product,
currently in beta - see WTC Questions and Answers
Regards,
Peter.
Got a Question? Ask BEA at http://askbea.bea.com
The views expressed in this posting are solely those of the author, and
BEA
Systems, Inc. does not endorse any of these views.
BEA Systems, Inc. is not responsible for the accuracy or completeness of
the
information provided
and assumes no duty to correct, expand upon, delete or update any of the
information contained in this posting.
Ams wrote:
Hi Manoj,
I want to call a tuxedo service and also want to update
database (using entity beabs) in same transaction so I
can't use AUTOTRAN , Am I right ?
I am using bea.jolt.pool.SessionPool's startTransaction
method to start a transaction and passing this
to SessionPool's call method.
Ams.
"Manoj SASIDHARAN" <[email protected]> wrote:
Hello Ams,
Could u plz give more information abt the usage scenario. Another way
to test
would be to put AUTOTRAN=Y for the service in question.
HTH
regards
MS
"Ams" <[email protected]> wrote:
Hi,
I am calling Tuxedo service from ejb using jolt.
I want the service call in transaction started in ejb.
I am getting following error.
LIBTUX_CAT:481: ERROR: Service xa_start returned -7
Does jolt support transaction ?
Ams
[att1.html] -
Hi All ,
Is it possible to debug Tuxedo Services using GDB in Unix environment (AIX) ..
Could you please share your experience in this regard
Thanks in advance
Nadeer.Nadeer,
Yes, it is possible to debug services using GDB. To get the most debugging
information, you should "export CFLAGS=-g" when running buildserver so that
your server will be compiled with debugging on. After booting the server,
you can attach to the running server using "gdb myserver process_id" and set
breakpoints. After setting breakpoints, you can give the "continue" command
and send a client request to the server.
Ed
"nadeer ahammed" <[email protected]> wrote in message
news:[email protected]..
Hi All ,
Is it possible to debug Tuxedo Services using GDB in Unix environment
(AIX) ..
Could you please share your experience in this regard
Thanks in advance
Nadeer. -
This is the situation we have:
1) We must support both C++ and Java clients that will be requesting
services from our EJBs running in WLS. The clients are internal apps running
in different companies and we would prefer to avoid requiring our clients to
use an ORB by a specific vendor. At the same time we do not want to deal
with potential problems related to the implementation differences by
different ORB vendors. What would be the best way to handle this situation?
2) WLS documentation has the following paragraph:
"WebLogic RMI over IIOP is the framework for EJB-to-CORBA mapping support.
Currently, however, a standard for passing user identity -- required to
implement EJB-to-CORBA mapping -- does not exist and the requirement for
transaction propagation from the client is in question. While RMI over IIOP
does allow CORBA clients to access EJBeans, the following services will not
be available:
EJB transaction services
EJB security services"
Does this mean that:
2.1) CORBA client initiated transactions will not be supported,
everything will work
2.2) None of the EJB security services will be available in EJB method
called by a CORBA client (i.e. getCallerPrincipal() and isCallerInRole()
will fail)
Thanks in advanceGenerally speaking, applications are built around common resources, namely the databases and security realms. Here, it seems you can't make any assumptions about the client at all, so you render useless the ability to propagate the transaction and security context; the upshot being that you couldn't
use it, even if we provided support for it, which we don't.
You also want to be shielded from all the incompatibilities between the ORB vendors, that is, you want to provide a client interface to call into an ejb, that will work irrespective of the orb the client runs. From this, I gather that you can have a 1.0 or 2.1 Tao, Visibroker, IONA, etc, orb as a
client, so you can not use objects in the interface.
To accomplish this, you need to do the following:
-- design the client interface so that it is stateless
-- design the interface so that it does not include any objects or structs... actually, you can use structs, it's just more complicated.
-- use server side transactions only (this follows from the statelessness of the interface)
-- either assume that ssl will be in place by the time you need it or include a token in the interface for the authenticated user
Please, read on...
"<=one way=>" wrote:
This is the situation we have:
1) We must support both C++ and Java clients that will be requesting
services from our EJBs running in WLS. The clients are internal apps running
in different companies and we would prefer to avoid requiring our clients to
use an ORB by a specific vendor. At the same time we do not want to deal
with potential problems related to the implementation differences by
different ORB vendors. What would be the best way to handle this situation?
We support IIOP as the transport. To call into any remote interface, you must provide a java.rmi.Remote interface, and code generate the IDL from that interface using weblogic.rmic. If you follow the above strictures, and use the -noValueTypes discussed earlier, you should be able to make progress
without the promised examples.... or you can wait for the examples.
>
2) WLS documentation has the following paragraph:
"WebLogic RMI over IIOP is the framework for EJB-to-CORBA mapping support.
Currently, however, a standard for passing user identity -- required to
implement EJB-to-CORBA mapping -- does not exist and the requirement for
transaction propagation from the client is in question. While RMI over IIOP
does allow CORBA clients to access EJBeans, the following services will not
be available:
EJB transaction services
EJB security services"
Does this mean that:
2.1) CORBA client initiated transactions will not be supported,
everything else (sic) will workYes.
>
2.2) None of the EJB security services will be available in EJB method
called by a CORBA client (i.e. getCallerPrincipal() and isCallerInRole()
will fail)No. The call will not fail, they will either provide values that correspond to the default or the user configured by the weblogic.iiop.user property.
>
>
Thanks in advance -
Tpcall() within a tuxedo service fails
when i invoke tpcall() within another Tuxedo service, the call fails with code
TPESVCFAIL. If I call this service from a standalone client, it works fine.
I'm reallocating a new FML Buffer to pass to the call, so I'm not sure if this
is somehow causing the service dispatcher (in main()) to not find the service
I'm trying to call.... here is the relevant code:
if ((trans_deposit = (FBFR*)tpalloc(FMLTYPE, NULL, 0)) == (FBFR*)NULL)
(void)printf("Failed to allocate deposit buffer>>>>\n");
tpreturn(TPFAIL, 0, transb->data, 0L, 0);
} else
printf(" allocated deposit buffer\n");
(void)Fadd(trans_deposit, ACCOUNT_ID, &account_id, (FLDLEN)0);
(void)Fadd(trans_deposit, TRANS_AMT, &trans_amt, (FLDLEN)0);
(void)Fadd(trans_deposit, TRANS_DATE, open_date, (FLDLEN)0);
if ((retc = tpcall("DEPOSIT", (char*)trans_deposit, 0L, (char**)&trans_deposit,
&reply_len, 0)) == -1)
printf(" error number is: %d\n", tperrno);
printf(" error message using tperr: %s\n", tpstrerror(tperrno));
printf("*********************\n");
Any help is greatly appreciated.I checked, and it is set to Y. What is the support email, and I will send them
an overview of what is happening....
thanks
John
Peter Holditch <[email protected]> wrote:
>
>
This seems a little wierd... I suggest you raise it with support.
The only thing I can think of is that your server making the tpcall has
REPLYQ=N set for it in the ubbconfig *SERVERS section. It needs to be
Y
if a call is to work.
I woudn't expect the symptoms you describe if that was the problem, however.
Regards,
Peter.
Got a Question? Ask BEA at http://askbea.bea.com
The views expressed in this posting are solely those of the author, and
BEA
Systems, Inc. does not endorse any of these views.
BEA Systems, Inc. is not responsible for the accuracy or completeness
of
the
information provided
and assumes no duty to correct, expand upon, delete or update any of
the
information contained in this posting.
john wrote:
I found that if I call tpforward() instead, then it works. I noticedsomething
in the documentation about specifying TPNOREPLY, is this the problemwith the
way I was trying to do it?
Thanks
John
"john" <[email protected]> wrote:
Actually, the error code is TPENOENT, sorry.....
"john" <[email protected]> wrote:
when i invoke tpcall() within another Tuxedo service, the call fails
with code
TPESVCFAIL. If I call this service from a standalone client, it works
fine.
I'm reallocating a new FML Buffer to pass to the call, so I'm not
sure
if this
is somehow causing the service dispatcher (in main()) to not findthe
service
I'm trying to call.... here is the relevant code:
if ((trans_deposit = (FBFR*)tpalloc(FMLTYPE, NULL, 0)) == (FBFR*)NULL)
(void)printf("Failed to allocate deposit buffer>>>>\n");
tpreturn(TPFAIL, 0, transb->data, 0L, 0);
} else
printf(" allocated deposit buffer\n");
(void)Fadd(trans_deposit, ACCOUNT_ID, &account_id, (FLDLEN)0);
(void)Fadd(trans_deposit, TRANS_AMT, &trans_amt, (FLDLEN)0);
(void)Fadd(trans_deposit, TRANS_DATE, open_date, (FLDLEN)0);
if ((retc = tpcall("DEPOSIT", (char*)trans_deposit, 0L, (char**)&trans_deposit,
&reply_len, 0)) == -1)
printf(" error number is: %d\n", tperrno);
printf(" error message using tperr: %s\n", tpstrerror(tperrno));
printf("*********************\n");
Any help is greatly appreciated.
<html>
<head>
</head>
<body>
This seems a little wierd... I suggest you raise it with support.<br>
<br>
<br>
The only thing I can think of is that your server making the tpcall has
REPLYQ=N
set for it in the ubbconfig *SERVERS section. It needs to be Y
if a call
is to work.<br>
<br>
I woudn't expect the symptoms you describe if that was the problem, however.<br>
<br>
Regards,<br>
Peter.<br>
<br>
<p>__________________________________________________________ <br>
Got a Question? Ask BEA at http://askbea.bea.com
</p>
The views expressed in this posting are solely those of the author, and
BEA
<br>
Systems, Inc. does not endorse any of these views. <br>
BEA Systems, Inc. is not responsible for the accuracy or completeness
of
the <br>
information provided <br>
and assumes no duty to correct, expand upon, delete or update any of
the <br>
information contained in this posting. <br>
___________________________________________________________ <br>
<br>
john wrote:<br>
<blockquote type="cite" cite="mid:[email protected]">
<pre wrap="">I found that if I call tpforward() instead, then it works.
I noticed something<br>in the documentation about specifying TPNOREPLY,
is this the problem with the<br>way I was trying to do it?<br>Thanks<br>John<br><br>"john"
<a class="moz-txt-link-rfc2396E" href="mailto:[email protected]"><[email protected]></a>
wrote:<br></pre>
<blockquote type="cite">
<pre wrap="">Actually, the error code is TPENOENT, sorry.....<br><br>"john"
<a class="moz-txt-link-rfc2396E" href="mailto:[email protected]"><[email protected]></a>
wrote:<br></pre>
<blockquote type="cite">
<pre wrap="">when i invoke tpcall() within another Tuxedo service,
the call fails<br>with code<br>TPESVCFAIL. If I call this service from
a standalone client, it works<br>fine. <br>I'm reallocating a new FML
Buffer to pass to the call, so I'm not sure<br>if this<br>is somehow
causing the service dispatcher (in main()) to not find the<br>service<br>I'm
trying to call.... here is the relevant code:<br><br> if ((trans_deposit
= (FBFR*)tpalloc(FMLTYPE, NULL, 0)) == (FBFR*)NULL)<br> {<br> (void)printf("Failed
to allocate deposit buffer>>>>\n");<br> tpreturn(TPFAIL,
0, transb->data, 0L, 0);<br> } else<br> {<br> printf(" allocated
deposit buffer\n");<br> }<br> (void)Fadd(trans_deposit, ACCOUNT_ID,
&account_id, (FLDLEN)0);<br> (void)Fadd(trans_deposit, TRANS_AMT,
&trans_amt, (FLDLEN)0);<br> (void)Fadd(trans_deposit, TRANS_DATE,
open_date, (FLDLEN)0);<br> <br> if ((retc = tpcall("DEPOSIT", (char*)trans_deposit,
0L, (char**)&trans_deposit,<br>&a
mp;reply_len, 0)) == -1)<br> {<br> printf(" error number is: %d\n",
tperrno);<br> printf(" error message using tperr: %s\n", tpstrerror(tperrno));<br>
printf("*********************\n");<br><br>Any help is greatly appreciated.<br></pre>
</blockquote>
</blockquote>
<pre wrap=""><!----><br></pre>
</blockquote>
<br>
</body>
</html>
Maybe you are looking for
-
Why can't I install Adobe Reader to my new version of windows 7?
I up graded my computer from win dows XP to windows 7 ultimite and now I can't install my printer or Adobe Reader.when I try to install it comes up installation failed:unknown error.can someone advise me how to install this using windows 7 ultimite?
-
Can't get [ ] brackets to work to increase or decrease
Hi I am new to this forum. I have CS2. My C drive crashed and I had to re-format my hard drive, and re-install all of my programs. Since then, my brackets[ ] with not work to increase or decrease brush sizes. I have to use the drop-down menu to chang
-
Problem with stills - output window
I am new to Premiero Pro. I have imported a still into my project and the preview window displays this perfectly but when I add to and play the timeline, the still image in the output window is cropped (edge's of the still dont display) The image is
-
Add Drop Shadow to JMenu Problem
Hi, I got this code from "Swing Hacks", for some reason it does not run for me, but throws exceptions. I can not figure out why this is happening. This code straight out of the book, should be runnable. Below is the custom class, then the driver-test
-
2 Airport extremes, one as base and one as a range extender?
Hope someone can help. I have 2 aiport extremes n version. I want to use one as a base station (which it is already) and another as 'range extender'. Airport utility only seems to allow a set up as a base station but I just what to open up a new bit