BindObject
Hi everybody,
**Object of problem**
Binding an object that are not yet registered in the name service.
**Context**
30's Forté connected environments geografically dispersed in Belgium.
**Explanation**
Brussels has our Forté super-environment.
A Forté listener object runs there and capts or receives a lot of messages
from our Unisys Mainframe.
When parsing these messages, the Listener_SO has to run, somewhere in
Belgium, an explicit method on a distributed binded object..
The BindObject method works very well when the local objects are referenced
in the name-service, or in another words, when the local partition is
ONLINE.
Early in the morning, I start the multiple local SO's with a script.
But sometimes, we have problem with our local servers. Something appears
that the parttion doesn't start. This is a normal system fault, bad boot of
server, disk fault, etc.
My problem is here:
Naturally, when it's append, the name service doesn't know this SO reference
because the concerned partition is OffLine.
When the listener tries to bind an unknowed object, I get a normal
DistAccessException with a ReasonCode SP_ER_OBJECTNOTFOUND.
ok... that's normal !
**BUT** when I start the local partion (then is OnLine), and I try a new
Bind, I have the same error ...
I have to shutdown the listener and the bind works properly.
In my context, I must not shutdown the listener and re-start it because many
people are connected with.
Is there a solution to my problem ? - I hope so, because I'm working in
production now, and the deadline for this solution is very very short ...
Thanks very much to help me,
Forte has a build in name service where it registers all of the service objects. (And more.) If you use something before UDS 5.0 you can see the name service in E-console under the application view. UDS 5.0 even allows you to drill down into the name service as part of Econsole.
You dynamicly bind with this code if you do a little research on bindobject:
bindName : textdata = new();
myName.replaceParameters('site/%1/%1-%2', SampleProjectName_cl0, SOSampleName);
myServer = (TUBaseService)(task.Part.ObjectLocationMgr.BindObject
(name = bindName, classType = serverClass));
This would bind to the SOSampleName service object in the project SampleProject. Notice that the compatibility level is important.
Hope this helps.
--Scott Bechtel
[email protected]
Similar Messages
-
NameService, ObjectLocationMgr and BindObject
Good morning to everybody.
I was trying to practice some object registering and binding
with Forte Name service.
Here are 2 files: pierreObjectLocationMgr registers an anchored
object in the Name Service, and pierreObjectLocationClient
should, in my fantasy, bind to that object and get the value
of an attribute.
Registering the object works fine:
I execute ESCRIPT, do the following:
findactenv
findsubagent nameservice
nsls /mydata
and the object myobject that I have registered appears.
When I try, with the Client application, to bind to the object,
it just happily hangs forever and ever, not even an exception,
just hanging.
I am using Forte 3.0.E.0 on NT workstation 4.0
Any clue?
Thanks a lot. Pierre.
Get Your Private, Free Email at http://www.hotmail.comWhere are the experts these days?
Please reply if you can
Thanks,
again
Jor3 -
Problem to send a message with JMS
Hi
I'm doing some tests with the api JMS to know how works. I have got some problems. I have been looking for some information but i don't find so much. I have got too doubts.
I am usinng Netbeans 5.5 with Sun Java System Application Server Platform Edition 9.0_01 (build b14).
I am trying to do it with ejb. Because in the future the application can have got so many connection in the same time.
The server shows me the next errors.
Starting Sun Java System Application Server Platform Edition 9.0_01 (build b14) ...
CORE5098: AS Socket Service Initialization has been completed.
CORE5076: Using [Java HotSpot(TM) Client VM, Version 1.6.0_03] from [Sun Microsystems Inc.]
SEC1002: Security Manager is OFF.
ADM0001:MBeanServer initialized successfully
SEC1143: Loading policy provider com.sun.enterprise.security.provider.PolicyWrapper.
sgmt.service_initialized
DPL5400:Exception occurred : error in opening zip file.
ADM1079: Initialization of AMX MBeans successful
ADM1504: Here is the JMXServiceURL for the Standard JMXConnectorServer: [service:jmx:rmi:///jndi/rmi://t1:8686/jmxrmi]. This is where the remote administrative clients should connect using the standard JMX connectors
ADM1506: Status of Standard JMX Connector: Active = [true]
JTS5014: Recoverable JTS instance, serverId = [3700]
About to load the system app: MEjbApp
LDR5010: All ejb(s) of [MEjbApp] loaded successfully!
About to load the system app: __ejb_container_timer_app
EJB5109:EJB Timer Service started successfully for datasource [jdbc/__TimerPool]
LDR5010: All ejb(s) of [__ejb_container_timer_app] loaded successfully!
NAM0008 : Invalid Destination: jndi/Topic for java:comp/env/jms/Topic
EJB5090: Exception in creating EJB container [javax.naming.NamingException [Root exception is javax.naming.NameNotFoundException]]
appId=Chat-ejb moduleName=Chat-ejb ejbName=publicarBean
LDR5004: UnExpected error occured while creating ejb container
javax.naming.NamingException [Root exception is javax.naming.NameNotFoundException]
at com.sun.enterprise.naming.NamingManagerImpl.bindObjects(NamingManagerImpl.java:485)
at com.sun.ejb.containers.BaseContainer.setupEnvironment(BaseContainer.java:2628)
at com.sun.ejb.containers.BaseContainer.<init>(BaseContainer.java:629)
at com.sun.ejb.containers.StatelessSessionContainer.<init>(StatelessSessionContainer.java:163)
at com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:515)
at com.sun.enterprise.server.AbstractLoader.loadEjbs(AbstractLoader.java:490)
at com.sun.enterprise.server.EJBModuleLoader.load(EJBModuleLoader.java:158)
at com.sun.enterprise.server.AbstractManager.load(AbstractManager.java:206)
at com.sun.enterprise.server.ApplicationLifecycle.onStartup(ApplicationLifecycle.java:198)
at com.sun.enterprise.server.ApplicationServer.onStartup(ApplicationServer.java:326)
at com.sun.enterprise.server.ondemand.OnDemandServer.onStartup(OnDemandServer.java:112)
at com.sun.enterprise.server.PEMain.run(PEMain.java:326)
at com.sun.enterprise.server.PEMain.main(PEMain.java:260)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.enterprise.server.PELaunch.main(PELaunch.java:272)
Caused by: javax.naming.NameNotFoundException
at com.sun.enterprise.naming.TransientContext.resolveContext(TransientContext.java:255)
at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:178)
at com.sun.enterprise.naming.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:61)
at com.sun.enterprise.naming.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:98)
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:309)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.sun.enterprise.naming.NamingManagerImpl.bindObjects(NamingManagerImpl.java:469)
... 17 more
CORE5021: Application NOT loaded: [Chat-ejb]
WEB0302: Starting Sun-Java-System/Application-Server.
WEB0100: Loading web module [__default-admingui] in virtual server [__asadmin] at [/]
WEB0100: Loading web module [adminapp] in virtual server [__asadmin] at [/web1]
WEB0100: Loading web module [admingui] in virtual server [__asadmin] at [/asadmin]
WEB0100: Loading web module [amserver] in virtual server [server] at [/amserver]
Initializing Sun's JavaServer Faces implementation (1.2_02-b03-FCS) for context ''
Completed initializing Sun's JavaServer Faces implementation (1.2_02-b03-FCS) for context ''
Initializing Sun's JavaServer Faces implementation (1.2_02-b03-FCS) for context '/asadmin'
Completed initializing Sun's JavaServer Faces implementation (1.2_02-b03-FCS) for context '/asadmin'
WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 8080
WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 8181
WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 4848
About to load the system app: __JWSappclients
WEB0100: Loading web module [__JWSappclients:sys.war] in virtual server [server] at [/__JWSappclients]
Using MQ RA for Broker lifecycle control
JMS Service Connection URL is :mq://t1:7676/
MQJMSRA_RA1101: SJSMQ JMS Resource Adapter starting...
EB-start:brokerProps={imq.instancename=imqbroker, imq.jmx.rmiregistry.port=8686, BrokerArgs=-port 7676 -name imqbroker -imqhome D:\Sun\AppServer\imq\bin\.. -varhome D:/sun/AppServer/domains/domain1\imq -useRmiRegistry -rmiRegistryPort 8686, imq.jmx.rmiregistry.use=true, imq.portmapper.port=7676}
[07/nov/2007:18:35:03 CET]
================================================================================
Sun Java(tm) System Message Queue 4.0
Sun Microsystems, Inc.
Version: 4.0 (Build 27-a)
Compile: Thu 03/02/2006
Copyright (c) 2006 Sun Microsystems, Inc. All rights reserved.
SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
This product includes code licensed from RSA Data Security.
================================================================================
Java Runtime: 1.6.0_03 Sun Microsystems Inc. D:\sun\Java\jdk1.6.0_03\jre
[07/nov/2007:18:35:03 CET] IMQ_HOME=D:\sun\AppServer\imq
[07/nov/2007:18:35:03 CET] IMQ_VARHOME=D:\sun\AppServer\domains\domain1\imq
[07/nov/2007:18:35:03 CET] Windows XP 5.1 x86 t1 (1 cpu) pepepc
[07/nov/2007:18:35:03 CET] Java Heap Size: max=506816k, current=46944k
[07/nov/2007:18:35:03 CET] Arguments: -port 7676 -name imqbroker -imqhome D:\Sun\AppServer\imq\bin\.. -varhome D:/sun/AppServer/domains/domain1\imq -useRmiRegistry -rmiRegistryPort 8686
[07/nov/2007:18:35:04 CET] [B1060]: Loading persistent data...
[07/nov/2007:18:35:04 CET] Using built-in file-based persistent store: D:\sun\AppServer\domains\domain1\imq\instances\imqbroker\
[07/nov/2007:18:35:04 CET] [B1189]: Cluster Service feature is not available
[07/nov/2007:18:35:04 CET] [B1039]: Broker "imqbroker@t1:7676" ready.
MQJMSRA_EB1101: run:EMBEDDED broker started with code =0
MQJMSRA_RA1101: SJSMQ JMS ResourceAdaapter configuration=
raUID =null
brokerType =EMBEDDED
brokerInstanceName =imqbroker
brokerBindAddress =null
brokerPort =7676
brokerHomeDir =D:\Sun\AppServer\imq\bin\..
brokerVarDir =D:/sun/AppServer/domains/domain1\imq
brokerJavaDir =D:/sun/Java/jdk1.6.0_03
brokerArgs =null
brokerStartTimeout =60000
adminUsername =admin
adminPassFile =E:\tempWin\asmq21980.tmp
useJNDIRmiServiceURL =true
rmiRegistryPort =8686
startRmiRegistry =false
useSSLJMXConnector =true
brokerEnableHA =false
clusterId =null
brokerId =null
jmxServiceURL =null
dbType =null
dbProps ={}
dsProps ={}
ConnectionURL =
UserName =guest
ReconnectEnabled =true
ReconnectInterval =5000
ReconnectAttempts =3
AddressListBehavior =RANDOM
AddressListIterations =3
InAppClientContainer =false
InClusteredContainer =false
GroupName =null
MQJMSRA_RA1101: start:SJSMQ JMSRA Connection Factory Config={imqOverrideJMSPriority=false, imqConsumerFlowLimit=1000, imqOverrideJMSExpiration=false, imqAddressListIterations=3, imqLoadMaxToServerSession=true, imqConnectionType=TCP, imqPingInterval=30, imqSetJMSXUserID=false, imqConfiguredClientID=, imqSSLProviderClassname=com.sun.net.ssl.internal.ssl.Provider, imqJMSDeliveryMode=PERSISTENT, imqConnectionFlowLimit=1000, imqConnectionURL=http://localhost/imq/tunnel, imqBrokerServiceName=, imqJMSPriority=4, imqBrokerHostName=localhost, imqJMSExpiration=0, imqAckOnProduce=, imqEnableSharedClientID=false, imqAckTimeout=0, imqAckOnAcknowledge=, imqConsumerFlowThreshold=50, imqDefaultPassword=guest, imqQueueBrowserMaxMessagesPerRetrieve=1000, imqDefaultUsername=guest, imqReconnectEnabled=false, imqConnectionFlowCount=100, imqAddressListBehavior=PRIORITY, imqReconnectAttempts=3, imqSetJMSXAppID=false, imqConnectionHandler=com.sun.messaging.jmq.jmsclient.protocol.tcp.TCPStreamHandler, imqSetJMSXRcvTimestamp=false, imqBrokerServicePort=0, imqDisableSetClientID=false, imqSetJMSXConsumerTXID=false, imqOverrideJMSDeliveryMode=false, imqBrokerHostPort=7676, imqQueueBrowserRetrieveTimeout=60000, imqSetJMSXProducerTXID=false, imqSSLIsHostTrusted=false, imqConnectionFlowLimitEnabled=false, imqReconnectInterval=5000, imqAddressList=localhost:7676, imqOverrideJMSHeadersToTemporaryDestinations=false}
MQJMSRA_RA1101: SJSMQ JMSRA Started
endpoint.determine.destinationtype
NAM0008 : Invalid Destination: jndi/Topic for java:comp/env/jms/Topic
EJB5090: Exception in creating EJB container [javax.naming.NamingException [Root exception is javax.naming.NameNotFoundException]]
appId=Chat moduleName=Chat-ejb_jar ejbName=publicarBean
LDR5004: UnExpected error occured while creating ejb container
javax.naming.NamingException [Root exception is javax.naming.NameNotFoundException]
at com.sun.enterprise.naming.NamingManagerImpl.bindObjects(NamingManagerImpl.java:485)
at com.sun.ejb.containers.BaseContainer.setupEnvironment(BaseContainer.java:2628)
at com.sun.ejb.containers.BaseContainer.<init>(BaseContainer.java:629)
at com.sun.ejb.containers.StatelessSessionContainer.<init>(StatelessSessionContainer.java:163)
at com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:515)
at com.sun.enterprise.server.AbstractLoader.loadEjbs(AbstractLoader.java:490)
at com.sun.enterprise.server.ApplicationLoader.load(ApplicationLoader.java:184)
at com.sun.enterprise.server.TomcatApplicationLoader.load(TomcatApplicationLoader.java:113)
at com.sun.enterprise.server.AbstractManager.load(AbstractManager.java:206)
at com.sun.enterprise.server.ApplicationLifecycle.onStartup(ApplicationLifecycle.java:204)
at com.sun.enterprise.server.ApplicationServer.onStartup(ApplicationServer.java:326)
at com.sun.enterprise.server.ondemand.OnDemandServer.onStartup(OnDemandServer.java:112)
at com.sun.enterprise.server.PEMain.run(PEMain.java:326)
at com.sun.enterprise.server.PEMain.main(PEMain.java:260)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.enterprise.server.PELaunch.main(PELaunch.java:272)
Caused by: javax.naming.NameNotFoundException
at com.sun.enterprise.naming.TransientContext.resolveContext(TransientContext.java:255)
at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:178)
at com.sun.enterprise.naming.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:61)
at com.sun.enterprise.naming.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:98)
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:309)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.sun.enterprise.naming.NamingManagerImpl.bindObjects(NamingManagerImpl.java:469)
... 18 more
Registering ad hoc servlet: WebPathPath: context root = "/Chat", path = "/Chat-app-client'
Java Web Start services started for application com.sun.enterprise.appclient.jws.ApplicationContentOrigin@aabc2d registration name=Chat
[email protected]56b4 registration name=Chat, context root=/Chat/Chat-app-client, module name=
, parent=Chat
CORE5021: Application NOT loaded: [Chat]
SMGT0007: Self Management Rules service is enabled
Application server startup complete.
JBISE6013: JavaEEServiceEngine : Java EE Service Engine started successfully.
CORE5024: EJB module [Chat-ejb] unloaded successfully!
DeployedItemRef postDeregistration failed. Load Balancer Monitoring MBeans might be lying around if this application is being load balanced
BPEL service engine started
ADM1064:The upload file at [E:\tempWin\s1astempdomain1server-162970426\Chat-ejb.jar] exists and will be overwritten.
ADM1006:Uploading the file to:[E:\tempWin\s1astempdomain1server-162970426\Chat-ejb.jar]
deployed with moduleid = Chat-ejb
ADM1041:Sent the event to instance:[ModuleDeployEvent -- enable ejb/Chat-ejb]
endpoint.determine.destinationtype
NAM0008 : Invalid Destination: jndi/Topic for java:comp/env/jms/Topic
EJB5090: Exception in creating EJB container [javax.naming.NamingException [Root exception is javax.naming.NameNotFoundException]]
appId=Chat-ejb moduleName=D__sun_AppServer_domains_domain1_applications_j2ee-modules_Chat-ejb ejbName=publicarBean
LDR5004: UnExpected error occured while creating ejb container
javax.naming.NamingException [Root exception is javax.naming.NameNotFoundException]
at com.sun.enterprise.naming.NamingManagerImpl.bindObjects(NamingManagerImpl.java:485)
at com.sun.ejb.containers.BaseContainer.setupEnvironment(BaseContainer.java:2628)
at com.sun.ejb.containers.BaseContainer.<init>(BaseContainer.java:629)
at com.sun.ejb.containers.StatelessSessionContainer.<init>(StatelessSessionContainer.java:163)
at com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:515)
at com.sun.enterprise.server.AbstractLoader.loadEjbs(AbstractLoader.java:490)
at com.sun.enterprise.server.EJBModuleLoader.load(EJBModuleLoader.java:158)
at com.sun.enterprise.server.StandAloneEJBModulesManager.moduleDeployed(StandAloneEJBModulesManager.java:219)
at com.sun.enterprise.server.StandAloneEJBModulesManager.moduleDeployed(StandAloneEJBModulesManager.java:174)
at com.sun.enterprise.server.StandAloneEJBModulesManager.moduleDeployed(StandAloneEJBModulesManager.java:406)
at com.sun.enterprise.server.StandAloneEJBModulesManager.moduleEnabled(StandAloneEJBModulesManager.java:500)
at com.sun.enterprise.admin.event.AdminEventMulticaster.invokeModuleDeployEventListener(AdminEventMulticaster.java:960)
at com.sun.enterprise.admin.event.AdminEventMulticaster.handleModuleDeployEvent(AdminEventMulticaster.java:941)
at com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEventMulticaster.java:448)
at com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminEventMulticaster.java:160)
at com.sun.enterprise.admin.server.core.AdminNotificationHelper.sendNotification(AdminNotificationHelper.java:128)
at com.sun.enterprise.admin.server.core.ConfigInterceptor.postInvoke(ConfigInterceptor.java:109)
at com.sun.enterprise.admin.util.proxy.ProxyClass.invoke(ProxyClass.java:97)
at $Proxy1.invoke(Unknown Source)
at com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneInterceptor.java:297)
at com.sun.enterprise.admin.jmx.remote.server.callers.InvokeCaller.call(InvokeCaller.java:56)
at com.sun.enterprise.admin.jmx.remote.server.MBeanServerRequestHandler.handle(MBeanServerRequestHandler.java:142)
at com.sun.enterprise.admin.jmx.remote.server.servlet.RemoteJmxConnectorServlet.processRequest(RemoteJmxConnectorServlet.java:109)
at com.sun.enterprise.admin.jmx.remote.server.servlet.RemoteJmxConnectorServlet.doPost(RemoteJmxConnectorServlet.java:180)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:397)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:184)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:174)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:216)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:184)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:276)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:179)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:73)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:182)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
at com.sun.enterprise.web.VirtualServerPipeline.invoke(VirtualServerPipeline.java:120)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:137)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:239)
at com.sun.enterprise.web.connector.grizzly.ProcessorTask.invokeAdapter(ProcessorTask.java:667)
at com.sun.enterprise.web.connector.grizzly.ProcessorTask.processNonBlocked(ProcessorTask.java:574)
at com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:844)
at com.sun.enterprise.web.connector.grizzly.ReadTask.executeProcessorTask(ReadTask.java:287)
at com.sun.enterprise.web.connector.grizzly.ReadTask.doTask(ReadTask.java:212)
at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252)
at com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:75)
Caused by: javax.naming.NameNotFoundException
at com.sun.enterprise.naming.TransientContext.resolveContext(TransientContext.java:255)
at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:178)
at com.sun.enterprise.naming.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:61)
at com.sun.enterprise.naming.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:98)
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:309)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.sun.enterprise.naming.NamingManagerImpl.bindObjects(NamingManagerImpl.java:469)
... 54 more
CORE5020: Error while loading ejb module
{code}
I know it is very large. I think the error it is in this line.
{code}
NAM0008 : Invalid Destination: jndi/Topic for java:comp/env/jms/Topic
EJB5090: Exception in creating EJB container [javax.naming.NamingException [Root exception is javax.naming.NameNotFoundException]]
{code}
also I am going to put the code.
file PublicarBean.java
{code}
package org.pepes;
import com.sun.tools.ws.processor.model.java.JavaArrayType;
import javax.annotation.Resource;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;
import javax.jms.ConnectionFactory;
import javax.jms.QueueConnectionFactory;
import javax.jms.Topic;
import javax.naming.NamingException;
* @author pepes
@Stateless(mappedName="ejb/publicar")
public class publicarBean implements org.pepes.publicarRemote {
/** Creates a new instance of publicarBean */
@Resource(name="jms/QueueConnectionFactory")
private QueueConnectionFactory connectionFactory;
@Resource(name="jms/Topic", mappedName="jndi/Topic")
private Topic topic;
private javax.naming.InitialContext ctx;
public publicarBean() {
public void creaMensaje() throws javax.naming.NamingException , javax.jms.JMSException {
try {
javax.naming.InitialContext ctx = new javax.naming.InitialContext();
this.connectionFactory = (javax.jms.QueueConnectionFactory)ctx.lookup("jms/QueueConnectionFactory");
this.topic = (javax.jms.Topic)ctx.lookup("jms/Topic");
javax.jms.Connection connection = this.connectionFactory.createConnection();
javax.jms.TopicSession ts = (javax.jms.TopicSession)connection.createSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
javax.jms.TopicPublisher tp = ts.createPublisher(this.topic);
javax.jms.TextMessage msg = ts.createTextMessage();
for (int i = 0; i<3;i++) {
msg.setText("Prueba: " + i);
tp.publish(msg);
catch (javax.jms.JMSException jmex) {
throw jmex;
{code}
the file publicarRemote.java
{code}
package org.pepes;
import javax.ejb.Remote;
* This is the business interface for publicar enterprise bean.
@Remote
public interface publicarRemote {
public void creaMensaje() throws javax.naming.NamingException , javax.jms.JMSException;
{code}
file mensaje.java
{code}
package org.pepes;
import javax.annotation.Resource;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.ejb.MessageDrivenContext;
import javax.jms.Message;
import javax.jms.MessageListener;
* Entity class Mensaje
* @author pepes
@MessageDriven(mappedName = "jms/Mensaje", activationConfig = {
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
public class Mensaje implements MessageListener {
/** Creates a new instance of Mensaje */
@Resource
private MessageDrivenContext mdc;
public Mensaje() {
public void onMessage(Message message) {
javax.jms.TextMessage msg = null;
try {
if (message instanceof javax.jms.TextMessage) {
msg = (javax.jms.TextMessage) message;
System.out.println(msg.getText());
} else {
System.out.println("Message of wrong type: "
+ message.getClass().getName());
} catch (javax.jms.JMSException e) {
e.printStackTrace();
mdc.setRollbackOnly();
} catch (Throwable te) {
te.printStackTrace();
{code}
the file prueba.jsp
{code}
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%--
The taglib directive below imports the JSTL library. If you uncomment it,
you must also add the JSTL library to the project. The Add Library... action
on Libraries node in Projects view can be used to add the JSTL 1.1 library.
--%>
<%--
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
--%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>JSP Page</h1>
<%--
This example uses JSTL, uncomment the taglib directive above.
To test, display the page like this: index.jsp?sayHello=true&name=Murphy
--%>
<%--
<c:if test="${param.sayHello}">
<!-- Let's welcome the user ${param.name} -->
Hello ${param.name}!
</c:if>
--%>
<%
try {
javax.naming.InitialContext ctx = new javax.naming.InitialContext();
org.pepes.publicarRemote publisher = (org.pepes.publicarRemote)ctx.lookup("ejb/publicar");
if (publisher==null) {
System.out.println("INFO: Es null");
else {
System.out.println("INFO: No es null");
publisher.creaMensaje();
} catch (javax.naming.NamingException ex) {
System.out.println("ERROR naming: " + ex.getMessage());
catch (javax.jms.JMSException jmex) {
System.out.println("ERROR jms: " + jmex.getMessage());
catch (java.lang.NullPointerException nullex) {
System.out.println("ERROR null: " + nullex.getMessage());
%>
</body>
</html>
{code}
I think the problem is because i don't put destination address. if it is so, the true where do I put this address?. if not where is the problem?
I hope your help.
Thanks you in advanced.Hi,
Did you create your destinations in your application server? It seems that the destinations such as topics and queues are not created. First you should create them and then start using them.
For example, in here, it says that jndi/Topic is not valid. To check if the destinations are valid or not; you can do it either through the graphical user interface or the command line console. -
RE: multiple named objects with the same name andinterface
David,
First I will start by saying that this can be done by using named anchored
objects and registering them yourself in the name service. There is
documentation on how to do this. And by default you will get most of the
behavior you desire. When you do a lookup in the name service (BindObject
method) it will first look in the local partition and see if there is a
local copy and give you that copy. By anchoring the object and manually
registering it in the name service you are programmatically creating your
own SO without defining it as such in the development environment. BTW in
response to your item number 1. This should be the case there as well. If
your "mobile" object is in the same partition where the service object he is
calling resides, you should get a handle to the local instance of the
service object.
Here is the catch, if you make a bind object call and there is no local copy
you will get a handle to a remote copy but you can not be sure which one!
It end ups as more or less a random selection. Off the top of my head and
without going to the doc, I am pretty sure that when you register an
anchored object you can not limit it's visibility to "User".
Sean
-----Original Message-----
From: [email protected]
[<a href="mailto:[email protected]">mailto:[email protected]]On</a> Behalf Of David Foote
Sent: Monday, June 22, 1998 4:51 PM
To: [email protected]
Subject: multiple named objects with the same name and interface
All,
More than once, I have wished that Forte allowed you to place named
objects with the same name in more than one partition. There are two
situations in which this seems desirable:
1) Objects that are not distributed, but are mobile (passed by value to
remote objects), cannot safely reference a Service Object unless it has
environment visibility, but this forces the overhead of a remote method
call when it might not otherwise be necessary. If it were possible to
place a copy of the same Service Object (with user visibility) in each
partition, the overhead of a remote method call could be avoided. This
would only be useful for a service object whose state could be safely
replicated.
2) My second scenario also involves mobile objects referencing a Service
Object, but this time I would like the behavior of the called Service
Object to differ with the partition from which it is called.
This could be accomplished by placing Service Objects with the same name
and the same interface in each partition, but varying the implementation
with the partition.
Does anyone have any thoughts about why this would be a good thing or a
bad thing?
David N. Foote
Consultant
Get Your Private, Free Email at <a href=
"http://www.hotmail.com">http://www.hotmail.com</a>
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:<a href=
"http://pinehurst.sageit.com/listarchive/">http://pinehurst.sageit.com/listarchive/</a>>
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:<a href=
"http://pinehurst.sageit.com/listarchive/">http://pinehurst.sageit.com/listarchive/</a>>David,
First I will start by saying that this can be done by using named anchored
objects and registering them yourself in the name service. There is
documentation on how to do this. And by default you will get most of the
behavior you desire. When you do a lookup in the name service (BindObject
method) it will first look in the local partition and see if there is a
local copy and give you that copy. By anchoring the object and manually
registering it in the name service you are programmatically creating your
own SO without defining it as such in the development environment. BTW in
response to your item number 1. This should be the case there as well. If
your "mobile" object is in the same partition where the service object he is
calling resides, you should get a handle to the local instance of the
service object.
Here is the catch, if you make a bind object call and there is no local copy
you will get a handle to a remote copy but you can not be sure which one!
It end ups as more or less a random selection. Off the top of my head and
without going to the doc, I am pretty sure that when you register an
anchored object you can not limit it's visibility to "User".
Sean
-----Original Message-----
From: [email protected]
[<a href="mailto:[email protected]">mailto:[email protected]]On</a> Behalf Of David Foote
Sent: Monday, June 22, 1998 4:51 PM
To: [email protected]
Subject: multiple named objects with the same name and interface
All,
More than once, I have wished that Forte allowed you to place named
objects with the same name in more than one partition. There are two
situations in which this seems desirable:
1) Objects that are not distributed, but are mobile (passed by value to
remote objects), cannot safely reference a Service Object unless it has
environment visibility, but this forces the overhead of a remote method
call when it might not otherwise be necessary. If it were possible to
place a copy of the same Service Object (with user visibility) in each
partition, the overhead of a remote method call could be avoided. This
would only be useful for a service object whose state could be safely
replicated.
2) My second scenario also involves mobile objects referencing a Service
Object, but this time I would like the behavior of the called Service
Object to differ with the partition from which it is called.
This could be accomplished by placing Service Objects with the same name
and the same interface in each partition, but varying the implementation
with the partition.
Does anyone have any thoughts about why this would be a good thing or a
bad thing?
David N. Foote
Consultant
Get Your Private, Free Email at <a href=
"http://www.hotmail.com">http://www.hotmail.com</a>
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:<a href=
"http://pinehurst.sageit.com/listarchive/">http://pinehurst.sageit.com/listarchive/</a>>
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:<a href=
"http://pinehurst.sageit.com/listarchive/">http://pinehurst.sageit.com/listarchive/</a>> -
RE: Named anchored objects
Albert,
In my case I was using a named anchored object to get a handle to an actual
service object. My named object that I registered in the name service was
an intermediary to which I did not maintain a connection. So I have not
explicitly tested what you are asking.
However, I too was not using a hard coded reference to the SO, and fail over
and load balancing worked fine. The functions of fail over and load
balancing are not done by the service object but by the name service, proxy
and router. Since you are getting a proxy back any time you do a lookup in
the name service I would think that fail over should work with any anchored
object that is registered in the name service. When you do a RegisterObject
call you will notice that one of the arguments is the session duration,
which implies to me that fail over will be handled the same as for service
objects.
Load balancing adds another wrinkle. Load balancing is handled by a router.
You must get a proxy to the router and not a proxy to an instance of the
object that the router is doing the load balancing for. In the latter
scenario you will be bypassing the router. If you are creating, anchoring
and registering your objects dynamically you will not have a router so you
will not be able to load balance! This applies even if the objects are
instantiated within partitions that are load balanced because you will still
be getting proxies back to a particular instance of the anchored objects.
There are ways to accomplish load balancing between objects that you
register yourself. However, the best solution will vary depending on the
actual problem trying to be solved. If you would like to discuss this
further, include a little more detail about the scenario you need to
implement and I will give you what I know.
BTY what I have outlined above also applies to getting references via a
system agent.
Sean
Cornice Consulting, Inc.
-----Original Message-----
From: [email protected]
[<a href="mailto:[email protected]">mailto:[email protected]]On</a> Behalf Of Albert Dijk
Sent: Friday, July 03, 1998 11:01 AM
To: [email protected]
Subject:
Alex, David, Jez, Sean,...
My question about both solutions (using Nameservice and agents) is:
If I reach a remote service object using either a BindObject or an agent, do
fail-over and load-balancing work the same way as they normally do when
using a hard coded reference to the SO.
Albert Dijk
From: Sean Brown[SMTP:[email protected]]
Reply To: [email protected]
Sent: Thursday, June 25, 1998 6:55 AM
To: Ananiev, Alex; [email protected]
Subject: RE: multiple named objects with the same name and
interface
Alexander,
I can not comment on the speed difference because I never tested it.
But, I
will say that we looked at the agent solution at a client sight
before. I
will give the same warning I gave them. If you go the agent direction
you
are now using agents for a purpose that they were not intended. Even
though
it technically works, as soon as you start using a piece of
functionality in
a way the developer did not intend it to be used you run the risk of
forward
compatibility problems. By this I mean, since agents were not
originally
intended to be used to look up service / anchored object references,
it may
not work in the future because it is not likely to be given
consideration in
any future design.
As we all know, programmers are always stretching the bounds of the
tools
they use and you may have a good reason (i.e. performance). I just
wanted to
let you know the possible risk.
One final note on a limitation of using system agents to obtain
references
to anchored objects. You can not access agents across environments.
So, if
you have connected environments and need to get references to services
in
another environment for fail-over or whatever, you will not be able to
do it
with agents.
Just some thoughts!
Sean
-----Original Message-----
From: [email protected]
[<a href="mailto:[email protected]]On">mailto:[email protected]]On</a> Behalf Of Ananiev, Alex
Sent: Wednesday, June 24, 1998 12:14 PM
To: '[email protected]'
Subject: RE: multiple named objects with the same name and interface
David,
The problem with dynamic binding is that in this case you have to keep
the reference to the service object somewhere. You don't want to call
"bindObject" every time you need to use this service object, "bind" is
a
time-consuming operation, even on the same partition. Keeping
reference
could be undesirable if your object could be moved across partitions
(e.g. business object).
The alternative solution is to use agents. You can create custom
agent,
make it a subagent of an active partition agent and use it as a
placeholder for whatever service you need. "FindSubAgent" works much
faster than "bindObject", we verified that and agent is "user-visible"
by its nature.
Alexander
From: "Sean Brown" <[email protected]>
Date: Wed, 24 Jun 1998 09:12:55 -0500
Subject: RE: multiple named objects with the same name and interface
David,
I actually determined it through testing. In my case I did not want
this to
happen and was trying to determine why it was happing. It makes sense
if
you think about it. Forte is trying to avoid making a remote method
invocation if it can.
Now, for anything more complex than looking locally first and if none
is
found give me any remote instance you can find, you will need to do
more
work. Using a naming scheme like Jez suggests below works well.
Sean
- -----Original Message-----
From: Jez Sygrove [<a href="mailto:[email protected]">mailto:[email protected]</a>]
Sent: Wednesday, June 24, 1998 4:34 AM
To: [email protected]; 'David Foote'
Cc: [email protected]
Subject: RE: multiple named objects with the same name and interface
David,
there's a mechanism used within SCAFFOLDS that allows the
location of the 'nearest' SO when more than one is available.
It involves registering each duplicated SO under three dynamically
built
names. The names include the partition, the node or the environment
name.
When wishing to locate the nearest SO the BO builds a SO name using
its
own partition and asks the name service for that.
If there is an SO registered under that name then it must be in the
same
partition and all is well. No cross partition calls.
If not, then the BO builds the name using its node and asks the name
service for that.
This means that if there is an SO outside the BO partition but still
on
the same node then this can be used. Again, relatively 'local'.
If neither of these work then the BO has to resort to an environment
wide search.
It may be that this approach could be adapted / adopted; I like it's
ingenuity.
Cheers,
Jez
From: David Foote[SMTP:[email protected]]
Reply To: David Foote
Sent: 24 June 1998 03:17
To: [email protected]
Cc: [email protected]
Subject: RE: multiple named objects with the same name and
interface
Sean,
First, thank you for your response. I have wondered about this fora
long time.
I looked at the documentation for ObjectLocationManager and on page
327
of the Framework Library and AppletSupport Library Guide indescribing
the BindObject method Forte says:
"The name service allows more than one anchored object (from
different
partitions) to be registered in the name service under the same
registration name. When you invoke the BindObject method with a
request
for a name that has duplicate registration entries, the BindObject
method finds an entry corresponding to an active partition, skipping
any
entries that do not. If no such active partition is found, or if the
requested name is not found in the name service registry, a
RemoteAccessException will be raised when the BindObject method is
invoked."
My question is: How did you discover that in the case of duplicate
registrations the naming service will return the local object if one
exists? This is not apparent from the documentation I have quoted.
Is
it documented elsewhere? Or did you determine it empirically?
David N. Foote,
Consultant
----Original Message Follows----
David,
First I will start by saying that this can be done by using named
anchored
objects and registering them yourself in the name service. There is
documentation on how to do this. And by default you will get mostof
the
behavior you desire. When you do a lookup in the name service
(BindObject
method) it will first look in the local partition and see if thereis
a
local copy and give you that copy. By anchoring the object and
manually
registering it in the name service you are programmatically creating
your
own SO without defining it as such in the development environment.
BTW
in
response to your item number 1. This should be the case there as
well.
If
your "mobile" object is in the same partition where the serviceobject
he is
calling resides, you should get a handle to the local instance ofthe
service object.
Here is the catch, if you make a bind object call and there is no
local
copy
you will get a handle to a remote copy but you can not be sure which
one!
It end ups as more or less a random selection. Off the top of myhead
and
without going to the doc, I am pretty sure that when you register an
anchored object you can not limit it's visibility to "User".
Sean
-----Original Message-----
From: [email protected]
[<a href=
"mailto:[email protected]]On">mailto:[email protected]]On</a> Behalf Of David Foote
Sent: Monday, June 22, 1998 4:51 PM
To: [email protected]
Subject: multiple named objects with the same name and interface
All,
More than once, I have wished that Forte allowed you to place named
objects with the same name in more than one partition. There aretwo
situations in which this seems desirable:
1) Objects that are not distributed, but are mobile (passed by value
to
remote objects), cannot safely reference a Service Object unless it
has
environment visibility, but this forces the overhead of a remote
method
call when it might not otherwise be necessary. If it were possibleto
place a copy of the same Service Object (with user visibility) ineach
partition, the overhead of a remote method call could be avoided.
This
would only be useful for a service object whose state could besafely
replicated.
2) My second scenario also involves mobile objects referencing a
Service
Object, but this time I would like the behavior of the calledService
Object to differ with the partition from which it is called.
This could be accomplished by placing Service Objects with the same
name
and the same interface in each partition, but varying the
implementation
with the partition.
Does anyone have any thoughts about why this would be a good thingor
a
bad thing?
David N. Foote
Consultant
Alexander Ananiev
Claremont Technology Group
916-558-4127
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive
<URL:<a href="http://pinehurst.sageit.com/listarchive/">http://pinehurst.sageit.com/listarchive/</a>>
>
>
>
Alexander Ananiev
Claremont Technology Group
916-558-4127
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:<a href=
"http://pinehurst.sageit.com/listarchive/">http://pinehurst.sageit.com/listarchive/</a>>
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:<a href=
"http://pinehurst.sageit.com/listarchive/">http://pinehurst.sageit.com/listarchive/</a>>Albert,
In my case I was using a named anchored object to get a handle to an actual
service object. My named object that I registered in the name service was
an intermediary to which I did not maintain a connection. So I have not
explicitly tested what you are asking.
However, I too was not using a hard coded reference to the SO, and fail over
and load balancing worked fine. The functions of fail over and load
balancing are not done by the service object but by the name service, proxy
and router. Since you are getting a proxy back any time you do a lookup in
the name service I would think that fail over should work with any anchored
object that is registered in the name service. When you do a RegisterObject
call you will notice that one of the arguments is the session duration,
which implies to me that fail over will be handled the same as for service
objects.
Load balancing adds another wrinkle. Load balancing is handled by a router.
You must get a proxy to the router and not a proxy to an instance of the
object that the router is doing the load balancing for. In the latter
scenario you will be bypassing the router. If you are creating, anchoring
and registering your objects dynamically you will not have a router so you
will not be able to load balance! This applies even if the objects are
instantiated within partitions that are load balanced because you will still
be getting proxies back to a particular instance of the anchored objects.
There are ways to accomplish load balancing between objects that you
register yourself. However, the best solution will vary depending on the
actual problem trying to be solved. If you would like to discuss this
further, include a little more detail about the scenario you need to
implement and I will give you what I know.
BTY what I have outlined above also applies to getting references via a
system agent.
Sean
Cornice Consulting, Inc.
-----Original Message-----
From: [email protected]
[<a href="mailto:[email protected]">mailto:[email protected]]On</a> Behalf Of Albert Dijk
Sent: Friday, July 03, 1998 11:01 AM
To: [email protected]
Subject:
Alex, David, Jez, Sean,...
My question about both solutions (using Nameservice and agents) is:
If I reach a remote service object using either a BindObject or an agent, do
fail-over and load-balancing work the same way as they normally do when
using a hard coded reference to the SO.
Albert Dijk
From: Sean Brown[SMTP:[email protected]]
Reply To: [email protected]
Sent: Thursday, June 25, 1998 6:55 AM
To: Ananiev, Alex; [email protected]
Subject: RE: multiple named objects with the same name and
interface
Alexander,
I can not comment on the speed difference because I never tested it.
But, I
will say that we looked at the agent solution at a client sight
before. I
will give the same warning I gave them. If you go the agent direction
you
are now using agents for a purpose that they were not intended. Even
though
it technically works, as soon as you start using a piece of
functionality in
a way the developer did not intend it to be used you run the risk of
forward
compatibility problems. By this I mean, since agents were not
originally
intended to be used to look up service / anchored object references,
it may
not work in the future because it is not likely to be given
consideration in
any future design.
As we all know, programmers are always stretching the bounds of the
tools
they use and you may have a good reason (i.e. performance). I just
wanted to
let you know the possible risk.
One final note on a limitation of using system agents to obtain
references
to anchored objects. You can not access agents across environments.
So, if
you have connected environments and need to get references to services
in
another environment for fail-over or whatever, you will not be able to
do it
with agents.
Just some thoughts!
Sean
-----Original Message-----
From: [email protected]
[<a href="mailto:[email protected]]On">mailto:[email protected]]On</a> Behalf Of Ananiev, Alex
Sent: Wednesday, June 24, 1998 12:14 PM
To: '[email protected]'
Subject: RE: multiple named objects with the same name and interface
David,
The problem with dynamic binding is that in this case you have to keep
the reference to the service object somewhere. You don't want to call
"bindObject" every time you need to use this service object, "bind" is
a
time-consuming operation, even on the same partition. Keeping
reference
could be undesirable if your object could be moved across partitions
(e.g. business object).
The alternative solution is to use agents. You can create custom
agent,
make it a subagent of an active partition agent and use it as a
placeholder for whatever service you need. "FindSubAgent" works much
faster than "bindObject", we verified that and agent is "user-visible"
by its nature.
Alexander
From: "Sean Brown" <[email protected]>
Date: Wed, 24 Jun 1998 09:12:55 -0500
Subject: RE: multiple named objects with the same name and interface
David,
I actually determined it through testing. In my case I did not want
this to
happen and was trying to determine why it was happing. It makes sense
if
you think about it. Forte is trying to avoid making a remote method
invocation if it can.
Now, for anything more complex than looking locally first and if none
is
found give me any remote instance you can find, you will need to do
more
work. Using a naming scheme like Jez suggests below works well.
Sean
- -----Original Message-----
From: Jez Sygrove [<a href="mailto:[email protected]">mailto:[email protected]</a>]
Sent: Wednesday, June 24, 1998 4:34 AM
To: [email protected]; 'David Foote'
Cc: [email protected]
Subject: RE: multiple named objects with the same name and interface
David,
there's a mechanism used within SCAFFOLDS that allows the
location of the 'nearest' SO when more than one is available.
It involves registering each duplicated SO under three dynamically
built
names. The names include the partition, the node or the environment
name.
When wishing to locate the nearest SO the BO builds a SO name using
its
own partition and asks the name service for that.
If there is an SO registered under that name then it must be in the
same
partition and all is well. No cross partition calls.
If not, then the BO builds the name using its node and asks the name
service for that.
This means that if there is an SO outside the BO partition but still
on
the same node then this can be used. Again, relatively 'local'.
If neither of these work then the BO has to resort to an environment
wide search.
It may be that this approach could be adapted / adopted; I like it's
ingenuity.
Cheers,
Jez
From: David Foote[SMTP:[email protected]]
Reply To: David Foote
Sent: 24 June 1998 03:17
To: [email protected]
Cc: [email protected]
Subject: RE: multiple named objects with the same name and
interface
Sean,
First, thank you for your response. I have wondered about this fora
long time.
I looked at the documentation for ObjectLocationManager and on page
327
of the Framework Library and AppletSupport Library Guide indescribing
the BindObject method Forte says:
"The name service allows more than one anchored object (from
different
partitions) to be registered in the name service under the same
registration name. When you invoke the BindObject method with a
request
for a name that has duplicate registration entries, the BindObject
method finds an entry corresponding to an active partition, skipping
any
entries that do not. If no such active partition is found, or if the
requested name is not found in the name service registry, a
RemoteAccessException will be raised when the BindObject method is
invoked."
My question is: How did you discover that in the case of duplicate
registrations the naming service will return the local object if one
exists? This is not apparent from the documentation I have quoted.
Is
it documented elsewhere? Or did you determine it empirically?
David N. Foote,
Consultant
----Original Message Follows----
David,
First I will start by saying that this can be done by using named
anchored
objects and registering them yourself in the name service. There is
documentation on how to do this. And by default you will get mostof
the
behavior you desire. When you do a lookup in the name service
(BindObject
method) it will first look in the local partition and see if thereis
a
local copy and give you that copy. By anchoring the object and
manually
registering it in the name service you are programmatically creating
your
own SO without defining it as such in the development environment.
BTW
in
response to your item number 1. This should be the case there as
well.
If
your "mobile" object is in the same partition where the serviceobject
he is
calling resides, you should get a handle to the local instance ofthe
service object.
Here is the catch, if you make a bind object call and there is no
local
copy
you will get a handle to a remote copy but you can not be sure which
one!
It end ups as more or less a random selection. Off the top of myhead
and
without going to the doc, I am pretty sure that when you register an
anchored object you can not limit it's visibility to "User".
Sean
-----Original Message-----
From: [email protected]
[<a href=
"mailto:[email protected]]On">mailto:[email protected]]On</a> Behalf Of David Foote
Sent: Monday, June 22, 1998 4:51 PM
To: [email protected]
Subject: multiple named objects with the same name and interface
All,
More than once, I have wished that Forte allowed you to place named
objects with the same name in more than one partition. There aretwo
situations in which this seems desirable:
1) Objects that are not distributed, but are mobile (passed by value
to
remote objects), cannot safely reference a Service Object unless it
has
environment visibility, but this forces the overhead of a remote
method
call when it might not otherwise be necessary. If it were possibleto
place a copy of the same Service Object (with user visibility) ineach
partition, the overhead of a remote method call could be avoided.
This
would only be useful for a service object whose state could besafely
replicated.
2) My second scenario also involves mobile objects referencing a
Service
Object, but this time I would like the behavior of the calledService
Object to differ with the partition from which it is called.
This could be accomplished by placing Service Objects with the same
name
and the same interface in each partition, but varying the
implementation
with the partition.
Does anyone have any thoughts about why this would be a good thingor
a
bad thing?
David N. Foote
Consultant
Alexander Ananiev
Claremont Technology Group
916-558-4127
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive
<URL:<a href="http://pinehurst.sageit.com/listarchive/">http://pinehurst.sageit.com/listarchive/</a>>
>
>
>
Alexander Ananiev
Claremont Technology Group
916-558-4127
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:<a href=
"http://pinehurst.sageit.com/listarchive/">http://pinehurst.sageit.com/listarchive/</a>>
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:<a href=
"http://pinehurst.sageit.com/listarchive/">http://pinehurst.sageit.com/listarchive/</a>> -
Hi,
This is what I get when I start j2ee -verbose.
I am using JDK1.3 and J2EESDK1.3.1
Any Help..
Thanx
J2EE server listen port: 9999
Naming service started:9999
Exception in thread "main" java.lang.NoSuchMethodError
at com.sun.corba.ee.internal.corba.AnyImpl.createTypeCodeForClass(AnyImpl.java:1256)
at com.sun.corba.ee.internal.iiop.ShutdownUtilDelegate.createTypeCode(ShutdownUtilDelegate.ja
va:223)
at com.sun.corba.ee.internal.iiop.ShutdownUtilDelegate.writeAny(ShutdownUtilDelegate.java:178
at javax.rmi.CORBA.Util.writeAny(Util.java:80)
at org.omg.stub.com.sun.enterprise.naming._SerialContextProvider_Stub.rebind(Unknown Source)
at com.sun.enterprise.naming.SerialContext.rebind(SerialContext.java:188)
at com.sun.enterprise.naming.SerialContext.rebind(SerialContext.java:202)
at javax.naming.InitialContext.rebind(InitialContext.java:370)
at com.sun.enterprise.naming.NamingManagerImpl.publishObject(NamingManagerImpl.java:192)
at com.sun.enterprise.naming.NamingManagerImpl.publishObject(NamingManagerImpl.java:149)
at com.sun.enterprise.server.J2EEServer.bindObject(J2EEServer.java:718)
at com.sun.enterprise.server.J2EEServer.createServerObject(J2EEServer.java:473)
at com.sun.enterprise.server.J2EEServer.run(J2EEServer.java:244)
at com.sun.enterprise.server.J2EEServer.main(J2EEServer.java:972)
************************************************************************you have to use jdk1.3.1_02 (03)
-
ERROR WHILE STARTING J2EE SERVER IN COMMAND PROMPT
C:\j2sdkee1.3.1\bin>j2ee -verbose
J2EE server listen port: 1050
Naming service started:1050
Exception in thread "main" java.lang.NoSuchMethodError
at com.sun.corba.ee.internal.corba.AnyImpl.createTypeCodeForClass(AnyImpl.java:1256)
at com.sun.corba.ee.internal.iiop.ShutdownUtilDelegate.createTypeCode(ShutdownUtilDelegate.java:223)
at com.sun.corba.ee.internal.iiop.ShutdownUtilDelegate.writeAny(ShutdownUtilDelegate.java:178)
at javax.rmi.CORBA.Util.writeAny(Util.java:80)
at org.omg.stub.com.sun.enterprise.naming._SerialContextProvider_Stub.rebind(Unknown Source)
at com.sun.enterprise.naming.SerialContext.rebind(SerialContext.java:188)
at com.sun.enterprise.naming.SerialContext.rebind(SerialContext.java:202)
at javax.naming.InitialContext.rebind(InitialContext.java:370)
at com.sun.enterprise.naming.NamingManagerImpl.publishObject(NamingManagerImpl.java:192)
at com.sun.enterprise.naming.NamingManagerImpl.publishObject(NamingManagerImpl.java:149)
at com.sun.enterprise.server.J2EEServer.bindObject(J2EEServer.java:718)
at com.sun.enterprise.server.J2EEServer.createServerObject(J2EEServer.java:473)
at com.sun.enterprise.server.J2EEServer.run(J2EEServer.java:244)
ANY DETAILS POST
REGARDS
VENKATI had the same problem overhere.
If you would have taken the time to read some topics on this forum you would have found dozens of others having this problem like
http://forum.java.sun.com/thread.jsp?forum=136&thread=280211
Which gave the answer for me
That was: install the jdk141 and UNDEFINE any classpath and cpath in you environment setting.
HTH
Xiffy -
I encountered a bug while using the deploytool to deploy
an EAR file to the Sun J2EE 1.3_01 server.
I submitted a bug report to Sun via the Sun Java Developer Connection.
(Sorry, it has not been assigned a BugID yet)
Question:
Does anybody know if the web container in Sun's
J2EE 1.3_01 server supports access to local enterprise beans?
Screenshots of the bug are available at
http://sync4j.sourceforge.net/deploymentbug/
Full details below....
-Sean
category: j2ee
subcategory: deployment
release: 1.3_01
hardware: x86
OSversion: windows_2000
synopsis: java.lang.ClassCastException thrown during deployment of Session bean
java -version
java version "1.3.1_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1_01)
Java HotSpot(TM) Client VM (build 1.3.1_01, mixed mode)
C:\j2sdkee1.3\bin>j2ee -version
Java 2 Enterprise Edition version 1.3_01, build 1.3_01-b01
I built a EJB 2.0 compliant stateful session bean.
The session bean has a remote interface (ISyncRemote),
a remote home interface (ISyncHomeRemote),
a local interface (ISyncLocal),
and a local home interface (ISyncHomeLocal).
I built an HTTP Servlet that is supposed to access
the Stateful Session Bean using ISyncHomeLocal and
ISyncLocal
I run "deploytool.bat" in GUI mode to perform the deployment.
During deployment, the deploytool GUI displays a message
box which states:
"There was a deployment error.
java.rmi.ServerException: RemoteException occurred in server thread;
nested exception is:
java.rmi.RemoteException: An error was encountered while loading
a web component.
Please refer to
<J2EE_HOME>/logs/<machine-name>/j2ee//j2ee/error.log
for more information. Please verify your Application with the
Verifier tool."
The "error.log" file did not contain any useful information.
I ran the J2EE "verifier.bat" tool to verify that my EAR archive is OK.
The Sun J2EE server output this error string:
"java.lang.ClassCastException:
com.sun.enterprise.deployment.EjbExternalDescriptor"
Here is the full output from the Sun J2EE server:
C:\j2sdkee1.3\bin>j2ee -verbose
J2EE server listen port: 1050
Naming service started:1050
Binding DataSource, name = jdbc/EstoreDB, url =
jdbc:cloudscape:rmi:CloudscapeDB;create=true
Binding DataSource, name = jdbc/Cloudscape, url =
jdbc:cloudscape:rmi:CloudscapeDB;create=true
Binding DataSource, name = jdbc/DB1, url =
jdbc:cloudscape:rmi:CloudscapeDB;create=true
Binding DataSource, name = jdbc/DB2, url =
jdbc:cloudscape:rmi:CloudscapeDB;create=true
Binding DataSource, name = jdbc/InventoryDB, url =
jdbc:cloudscape:rmi:CloudscapeDB;create=true
Binding DataSource, name = jdbc/XACloudscape, url = jdbc/XACloudscape__xa
Binding DataSource, name = jdbc/XACloudscape__xa, dataSource =
COM.cloudscape.core.RemoteXaDataSourc
e@245536
Starting JMS service...
Initialization complete - waiting for client requests
Binding: < JMS Destination : jms/Queue , javax.jms.Queue >
Binding: < JMS Destination : jms/Topic , javax.jms.Topic >
Binding: < JMS Cnx Factory : TopicConnectionFactory , Topic , No properties >
Binding: < JMS Cnx Factory : jms/TopicConnectionFactory , Topic , No properties
>
Binding: < JMS Cnx Factory : QueueConnectionFactory , Queue , No properties >
Binding: < JMS Cnx Factory : jms/QueueConnectionFactory , Queue , No properties
>
Starting web service at port: 8000
Starting secure web service at port: 7000
J2EE SDK/1.3
Starting web service at port: 9191
J2EE SDK/1.3
J2EE server startup complete.
Compiling c:\j2sdkee1.3\repository\rbi\gnrtrTMP\Sync4j Server enterprise
application\sync4j\server\s
yncbean\SyncBean_LocalHomeImpl.java ....
Compiling c:\j2sdkee1.3\repository\rbi\gnrtrTMP\Sync4j Server enterprise
application\sync4j\server\s
yncbean\SyncBean_EJBLocalObjectImpl.java ....
Compiling c:\j2sdkee1.3\repository\rbi\gnrtrTMP\Sync4j Server enterprise
application\sync4j\server\s
yncbean\SyncBean_RemoteHomeImpl.java ....
Compiling c:\j2sdkee1.3\repository\rbi\gnrtrTMP\Sync4j Server enterprise
application\sync4j\server\s
yncbean\SyncBean_EJBObjectImpl.java ....
rmic sync4j.server.syncbean.SyncBean_RemoteHomeImpl...
rmic sync4j.server.syncbean.SyncBean_EJBObjectImpl...
c:\j2sdkee1.3\repository\rbi\applications\Sync4j Server enterprise
application1004172068449Server.ja
r
Binding name:`java:comp/env/ejb/ISyncHomeRemote`
Binding name:`java:comp/env/ejb/ISyncHomeLocal`
java.lang.ClassCastException:
com.sun.enterprise.deployment.EjbExternalDescriptor
at com.sun.enterprise.deployment.EjbReferenceDescriptor.getValue
(EjbReferenceDescriptor.java
:202)
at com.sun.enterprise.naming.NamingManagerImpl.bindObjects
(NamingManagerImpl.java:394)
at com.sun.web.server.WebService.addContext(WebService.java:148)
at com.sun.web.server.ServletDeployerImpl.loadWebComponents
(ServletDeployerImpl.java:214)
at
com.sun.enterprise.tools.deployment.backend.JarInstallerImpl.deployWebComponent
s
(JarInsta
llerImpl.java:791)
at
com.sun.enterprise.tools.deployment.backend.JarInstallerImpl.deployApplication
(JarInstall
erImpl.java:219)
at
org.omg.stub.com.sun.enterprise.tools.deployment.backend._JarInstallerImpl_Tie.
invoke(Un
known Source)
at com.sun.corba.ee.internal.corba.ServerDelegate.dispatch
(ServerDelegate.java:355)
at com.sun.corba.ee.internal.iiop.ORB.process(ORB.java:273)
at com.sun.corba.ee.internal.iiop.RequestProcessor.process
(RequestProcessor.java:84)
at com.sun.corba.ee.internal.orbutil.ThreadPool$PooledThread.run
(ThreadPool.java:99)
Does the Sun J2EE server implementation support the invocation
of Session EJB's via a Local interface?
Does the Sun J2EE server implementation allow a Servlet to invoke
Session EJB's via the bean's Local interface?
While researching this issue, I read the J2EE 1.3 final specification.
The spec says:
"The EJB container is required to access to local enterprise beans.
We recommend that the web container also support access to local
enterprise beans."
Does the web container in Sun's J2EE server support access to local enterprise beans?I'm pretty much sure that you cannot access a
local Session bean from outside the EJB container.Please read the J2EE 1.3 specification before posting messages about EJB and J2EE.
According to the J2EE 1.3 specification:
"The EJB container is required to support access to local enterprise beans. We recommend that the web container also support access to local enterprise beans.
No support is provided for access to local enterprise beans from the application client container or the applet container."
If you use local interfaces for your session bean,
than your client must be local too. A local client is
a client that is collocated in the same JVM with the
session/entity that provides the local view and which
can be tightly coupled to the bean.My client is running in the same JVM as my EJB. The client is a servlet. The servlet is running in the same JVM as the EJB.
For what its worth, the error that I observed occurs during deployment. I haven't figured out why deployment is failing. -
Message Driven Bean - Configuration problem
Hi
I have created the connection factory as jms/ConnectionFactory and physical destination as PhysicalQueue and queue as jms/Queue as per
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/MDB5.html#wp79772
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/MDB6.html
But I am getting the following exception
[#|2005-03-10T13:36:52.970+0530|SEVERE|sun-appserver-pe8.0.0_01|javax.enterprise.system.core.classloading|_ThreadID=11;|LDR5004: UnExpected error occured while creating ejb container
javax.naming.NamingException: Message Destination Reference java:comp/env/jms/Queue has not been linked to a Message Destination
at com.sun.enterprise.naming.NamingManagerImpl.bindObjects(NamingManagerImpl.java:450)
at com.sun.ejb.containers.BaseContainer.setupEnvironment(BaseContainer.java:1759)
at com.sun.ejb.containers.BaseContainer.<init>(BaseContainer.java:376)
at com.sun.ejb.containers.MessageBeanContainer.<init>(MessageBeanContainer.java:118)
at com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:196)
at com.sun.enterprise.server.AbstractLoader.loadEjbs(AbstractLoader.java:477)
at com.sun.enterprise.server.ApplicationLoader.load(ApplicationLoader.java:125)
at com.sun.enterprise.server.TomcatApplicationLoader.load(TomcatApplicationLoader.java:96)
at com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:205)
at com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:156)
at com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:480)
at com.sun.enterprise.admin.event.AdminEventMulticaster.invokeApplicationDeployEventListener(AdminEventMulticaster.java:448)
at com.sun.enterprise.admin.event.AdminEventMulticaster.handleApplicationDeployEvent(AdminEventMulticaster.java:432)
at com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEventMulticaster.java:299)
at com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminEventMulticaster.java:107)
at com.sun.enterprise.admin.server.core.mbean.config.ManagedServerInstance.multicastEvent(ManagedServerInstance.java:3880)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.sun.enterprise.admin.server.core.jmx.Introspector.invokeMethodOn(Introspector.java:181)
at com.sun.enterprise.admin.server.core.mbean.config.AdminBase.invoke(AdminBase.java:86)
at com.sun.enterprise.admin.server.core.mbean.config.ConfigMBeanBase.invoke(ConfigMBeanBase.java:680)
at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:221)
at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:228)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:
My ejb-jar.xml is as below
<?xml version='1.0' encoding='UTF-8'?>
<ejb-jar
xmlns="http://java.sun.com/xml/ns/j2ee"
version="2.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
>
<display-name>RegJAR</display-name>
<enterprise-beans>
<message-driven>
<ejb-name>RegistrationMDBean</ejb-name>
<ejb-class>com.registration.ejb.RegistrationMDBean</ejb-class>
<messaging-type>javax.jms.MessageListener</messaging-type>
<transaction-type>Container</transaction-type>
<message-destination-type>javax.jms.Queue</message-destination-type>
<message-destination-link>PhysicalQueue</message-destination-link>
<message-destination-ref>
<message-destination-ref-name>jms/Queue</message-destination-ref-name>
<message-destination-type>javax.jms.Queue</message-destination-type>
<message-destination-usage>Consumes</message-destination-usage>
<message-destination-link>PhysicalQueue</message-destination-link>
</message-destination-ref>
</message-driven>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>RegistrationMDBean</ejb-name>
<method-name>onMessage</method-name>
<method-params>
<method-param>javax.jms.Message</method-param>
</method-params>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
Thanks
SuneeshIn stead of selecting the message destination I have selected the Message Dest Ref tab .But when I selected the message destination tab of JAR file I am getting the following error
[#|2005-03-10T15:51:22.263+0530|INFO|sun-appserver-pe8.0.0_01|javax.enterprise.system.tools.admin|_ThreadID=12;|ADM1041:Sent the event to instance:[ApplicationDeployEvent -- enable MDBEg]|#]
[#|2005-03-10T15:51:22.283+0530|SEVERE|sun-appserver-pe8.0.0_01|javax.enterprise.system.container.ejb.mdb|_ThreadID=12;|MDB00017: [RegistrationMDBean]: Exception in creating message-driven bean container: [com.sun.enterprise.connectors.ConnectorRuntimeException: JMS resource not created : ]|#]
[#|2005-03-10T15:51:22.283+0530|SEVERE|sun-appserver-pe8.0.0_01|javax.enterprise.system.container.ejb.mdb|_ThreadID=12;|com.sun.enterprise.connectors.ConnectorRuntimeException
com.sun.enterprise.connectors.ConnectorRuntimeException: JMS resource not created :
at com.sun.enterprise.connectors.system.ActiveJmsResourceAdapter.getPhysicalDestinationFromConfiguration(ActiveJmsResourceAdapter.java:296)
at com.sun.enterprise.connectors.system.ActiveJmsResourceAdapter.updateMDBRuntimeInfo(ActiveJmsResourceAdapter.java:232)
at com.sun.enterprise.connectors.inflow.ConnectorMessageBeanClient.setup(ConnectorMessageBeanClient.java:139)
at com.sun.ejb.containers.MessageBeanContainer.<init>(MessageBeanContainer.java:189)
at com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:196)
at com.sun.enterprise.server.AbstractLoader.loadEjbs(AbstractLoader.java:477)
at com.sun.enterprise.server.ApplicationLoader.load(ApplicationLoader.java:125)
at com.sun.enterprise.server.TomcatApplicationLoader.load(TomcatApplicationLoader.java:96)
at com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:205)
at com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:156)
at com.sun.enterprise.server.ApplicationManager.applicationEnabled(ApplicationManager.java:590)
at com.sun.enterprise.admin.event.AdminEventMulticaster.invokeApplicationDeployEventListener(AdminEventMulticaster.java:454)
at com.sun.enterprise.admin.event.AdminEventMulticaster.handleApplicationDeployEvent(AdminEventMulticaster.java:432)
at com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEventMulticaster.java:299)
at com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminEventMulticaster.java:107)
at com.sun.enterprise.admin.server.core.mbean.config.ManagedServerInstance.multicastEvent(ManagedServerInstance.java:3880)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.sun.enterprise.admin.server.core.jmx.Introspector.invokeMethodOn(Introspector.java:181)
at com.sun.enterprise.admin.server.core.mbean.config.AdminBase.invoke(AdminBase.java:86)
at com.sun.enterprise.admin.server.core.mbean.config.ConfigMBeanBase.invoke(ConfigMBeanBase.java:68
Thanks
Suneesh -
Re: [Fwd: FindSO?]
Hi Rick,
You can use the Forte ObjectLocationMgr to dynamically register and bind
to named, anchored objects (which may be service objects). The SCAFFOLDS
2.0 RouteManager (Custom Router) uses this mechanism to determine the
ExecutionManager (typically a service object) to route to, at run time.
However, there are some issues that you need to consider before going
with this approach. The primary disadvantage of not directly using a
ServiceObject reference in Forte is that Forte failover only kicks in
when you directly call out to a ServiceObject that is absent from the
current environment. A direct call to the ServiceObject is also required
at application startup of deployed applications if you do not pre-start
your server partitions.
The SCAFFOLDS custom routing mechanism accounts for all these issues
while still providing you with the dynamic ServiceObject determination
that you are looking for. You can provide the routing rules by either
using one of the RouteModules out of the box, or by writing your own
RouteModule.
If you give some more details about your scenario, I will be happy to
make further recommendations.
Is there a way to get an object reference to a service object by
name/string ?
In a connectorHandler, I'm trying to dynamically connect to the partition
of a Service Object wihtout having to hardcode a huge case statement and
know a compile time all possible SO's. Thanks in advance.
Rick Vaillancourt
Novalis Corporation
Sameer Vaidya
SCAFFOLDS Engineer
Sage IT Partners
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>As of release 3J there is an easier way to do this that used to be hidden.
I am hoping that the uncovering of this functionality was on purpose and not
by accident meaning it may go away later!? But, it is now possible to use
the name service to look up a service object directly. This used to require
setting an unsupported configuration flag but appears to no longer require
this.
You use bindobject as you would with a named anchored object but supply the
path to your service object. The path is in the form:
'site/ServerProjectName_cl#/ApplicationName_cl#-ServiceName'
Using this method, fail-over and load balancing will worked as advertised!
This is not the case when you bind to a named anchored object.
One catch is that the service can only be found under the name above when it
has actually been deployed. The path is different when you are running from
the workshops. I am assuming that direct binding will work in that
circumstance as well as long as you provide the correct path. However, I
have not tested it.
Hope this helps!
Sean
Cornice Consulting Inc.
mailto:[email protected]
-----Original Message-----
From: [email protected]
[<a href="mailto:[email protected]">mailto:[email protected]]On</a> Behalf Of Sameer Vaidya
Sent: Thursday, December 17, 1998 12:02 PM
To: [email protected]
Cc: Tim E. Hall; [email protected]; [email protected]
Subject: Re: [Fwd: FindSO?]
Hi Rick,
You can use the Forte ObjectLocationMgr to dynamically register and bind
to named, anchored objects (which may be service objects). The SCAFFOLDS
2.0 RouteManager (Custom Router) uses this mechanism to determine the
ExecutionManager (typically a service object) to route to, at run time.
However, there are some issues that you need to consider before going
with this approach. The primary disadvantage of not directly using a
ServiceObject reference in Forte is that Forte failover only kicks in
when you directly call out to a ServiceObject that is absent from the
current environment. A direct call to the ServiceObject is also required
at application startup of deployed applications if you do not pre-start
your server partitions.
The SCAFFOLDS custom routing mechanism accounts for all these issues
while still providing you with the dynamic ServiceObject determination
that you are looking for. You can provide the routing rules by either
using one of the RouteModules out of the box, or by writing your own
RouteModule.
If you give some more details about your scenario, I will be happy to
make further recommendations.
Is there a way to get an object reference to a service object by
name/string ?
In a connectorHandler, I'm trying to dynamically connect to thepartition
of a Service Object wihtout having to hardcode a huge case statement and
know a compile time all possible SO's. Thanks in advance.
Rick Vaillancourt
Novalis Corporation
Sameer Vaidya
SCAFFOLDS Engineer
Sage IT Partners
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:<a href=
"http://pinehurst.sageit.com/listarchive/">http://pinehurst.sageit.com/listarchive/</a>>
>
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:<a href=
"http://pinehurst.sageit.com/listarchive/">http://pinehurst.sageit.com/listarchive/</a>> -
RE: Global Object -- the last word
Chris,
You are correct. My apologies for not testing my reply sooner. The
OLM.RegisterObject method does touch the NameService, but OLM caches
registrations and therefor OLM.BindObject is a local call. So there is one
network call, but that's all (unless the cache entries are aged out).
Andrew,
After testing all of the proposed solutions, using task.part.apptitle seems
the easiest one to implement. Subclass from TextNullable and add an
attribute to hold the reference to LocalCache. Remember, TextNullable can
not be anchored.
Caveat, you are relying on a Forte feature which may not be guaranteed to
work the same way in the future.
At 01:59 PM 10/17/97 -0500, you wrote:
Where would the network traffic come in? The object location manager
is local, and if you assume the cache object is also local (there is
one on each partition), I don't see where the network hit would be.
Would you please enlighten me?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Chris Johnson
BORN Information Services Group
Forte National Practice
Direct: 612-404-4409
Fax: 612-404-4441
http://www.born.com
mailto:[email protected]
From: David Vydra[SMTP:[email protected]]
Sent: Friday, October 17, 1997 12:42 PM
To: [email protected]
Subject: RE: Global Object
Guy,
At 11:35 AM 10/17/97 -0500, you wrote:
Another approach would be to use the partition's object locationmanager
(task.part.objectLocationMgr) to register the partition's local cachecontainer object (LOCache) under a name based on the
partition's name. Tasks needing the cache container can use the"bindObject" method to get the reference back.
I believe this would generate network traffic for each bind, and if
the
objects in need of the local service are transient the overhead may be
considerable.
========================================
David Vydra
Education Consultant
Forte Software, Inc.
[email protected]; phone: (510)986.3593Possible problems with using task.part.appTitle.
1) Isn't appTitle part of the task? If it is, what happens when the
task goes across a partition boundary? Does the appTitle get serialized
and deserialized by Forte? As long as the cache itself is anchored this
reference held in the appTitle is only a proxy. (But a TextNullable
cannot be anchored.) If the cache is not anchored, won't the entire
cache get serialized and deserialized at each partition boundary?
2) If the appTitle goes with the Task when it crosses a partition
boundary, what happens when some piece of code in the other partition
attempts to use the cache? If the cache was able to be anchored,
wouldn't there a network hit at this point? Also, haven't you just lost
the 'local'ness of the local cache.
3) What about serialization problems when you enter a partition that
does not know about the cache object. Won't you get a deserialization
error when you enter a non-application partition such as the Node
Manager or Forte's run-time compiler?
4) Version 3 provides appContext which can be used to hold any Object.
This should probably only be used for very small objects or anchored
object that are used infrequently on a different partition. Since
appTitle cannot be anchored, why would you use it rather than
appContext (Version 2 is a different story)? AppContext appears to be a
more generic solution to the global object problem, one that Forte will
support. Neither AppContext nor appTitle appear to be solutions to a
local cache problem.
John G. Bielejeski
Born Information Services Group (http://www.born.com)
Forte National Practice
Voice: (612) 404-4116
Fax: (612) 404-4440
mailto:[email protected]
From: David Vydra[SMTP:[email protected]]
Sent: Sunday, October 19, 1997 7:04 PM
To: [email protected]
Subject: RE: Global Object -- the last word
Chris,
You are correct. My apologies for not testing my reply sooner. The
OLM.RegisterObject method does touch the NameService, but OLM caches
registrations and therefor OLM.BindObject is a local call. So there is
one
network call, but that's all (unless the cache entries are aged out).
Andrew,
After testing all of the proposed solutions, using task.part.apptitle
seems
the easiest one to implement. Subclass from TextNullable and add an
attribute to hold the reference to LocalCache. Remember, TextNullable
can
not be anchored.
Caveat, you are relying on a Forte feature which may not be guaranteed
to
work the same way in the future.
At 01:59 PM 10/17/97 -0500, you wrote:
Where would the network traffic come in? The object locationmanager
is local, and if you assume the cache object is also local (thereis
one on each partition), I don't see where the network hit would be.
Would you please enlighten me?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Chris Johnson
BORN Information Services Group
Forte National Practice
Direct: 612-404-4409
Fax: 612-404-4441
http://www.born.com
mailto:[email protected]
From: David Vydra[SMTP:[email protected]]
Sent: Friday, October 17, 1997 12:42 PM
To: [email protected]
Subject: RE: Global Object
Guy,
At 11:35 AM 10/17/97 -0500, you wrote:
Another approach would be to use the partition's object locationmanager
(task.part.objectLocationMgr) to register the partition's local
cache
container object (LOCache) under a name based on the
partition's name. Tasks needing the cache container can use the"bindObject" method to get the reference back.
I believe this would generate network traffic for each bind, and if
the
objects in need of the local service are transient the overhead maybe
considerable.
========================================
David Vydra
Education Consultant
Forte Software, Inc.
[email protected]; phone: (510)986.3593 -
Object binding and ISDN connections
Forté users,
the problem is the following:
we have a win95 client running remotely and connected to a server
(ultrasparc solaris) via an ISDN line.
The application works normally for almost all applicative functionality and
Fortè mechanisms (events posted from clients included) except one: the
task.Part.ObjectLocationMgr.bindObject method.
We use the task.Part.ObjectLocationMgr.bindObject method to bind an object
on a client A to an object on a client B (we use this direct communication
link from one client to another to implement a sort of 'remote' control of
client B from the client A).
This solution normally WORKS when A e B are in our in-house LAN and NOT
when A or B connect to the rest of the system via an ISDN line! (I have not
tried a modem connection). I repeat all other functionalities works
normally.
Has someone encountered this problem before? Has someone an idea to solve
the problem or to understand the reason of this behavoiur?
We are using Forté 2.0.H.1.
Thank you very much in advance.
Corrado Tamietti (Tel : +39 11 3168.733)
CSI Piemonte (Consorzio per il Sistema Informativo)
C.so Unione Sovietica 216
I-10134 Torino (ITALY)hi,
For that you have to create custom BO(using SWO1) which supertype is current BO.
then in that ZBO you can change the value using below code:
in top of programme include<CNTN01>.
then to get that element use :
swc_get_element container 'PERNR' empid.
then process on it or create new container element using
swc_create_element 'PERNR' empid.
then fill it using
swc_set_element container 'IT_EMP' IT_EMP.
or if it is multi line element use:
swc_set_table
lt_event_container
'ZMAIL' it_TEXT1.
don't forget to include<cntn01>.
then copy existing standard task(using PFTC) and define necessary container element and do binding!
Hope magic Works!
Regards,
Purvesh Patel. -
RE: forte-users-digest V1 #322
Re: "We wish to eliminate any object references to the service object's
partition. Any insight would be greatly appreciated." from Van Vuong
<[email protected]>
This was in regards to copying a set of object from a server to client.
An implicit clone is being done. This also copyies objects they want to
remain on the server.
I believe the normal method of doing this is to anchor the server side
objects. Then when the deep clone occurs, it stops at the anchored
objects generating a proxy. That can also have other affects you do not
want but will at least stop the copying.
From: owner-forte-users-digest
Sent: Tuesday, April 15, 1997 8:09 AM
To: forte-users-digest
Subject: forte-users-digest V1 #322
forte-users-digest Tuesday, 15 April 1997 Volume 01 :
Number 322
How does deep copy apply to arrays?
Re: Global Variables
Re: Global Variables
Using the Edit commands in a menu
Re: Global Variables
Re: How does deep copy apply to arrays?
From: Van Vuong <[email protected]>
Date: Mon, 14 Apr 1997 17:16:46 -0500
Subject: How does deep copy apply to arrays?
I have a service object that has a method that returns an array of
objects. The return type for the method is defined with the copy option.
I found documentation that states that the copy option creates a deep
copy of the return variable on the partition that called the method.
My question is: If the return type for the method is an array of
objects, will the copy option create copies of all objects/elements in
the array?
We wish to eliminate any object references to the service object's
partition. Any insight would be greatly appreciated.
Thanks in advance,
Van Vuong
Phone: 972.985.5289
Pager: 972.320.2232
VoiceNow Pager: 972.330.0822
E-mail: [email protected]
PAGE NET
From: David Bell <[email protected]>
Date: Mon, 14 Apr 1997 22:44:19 +0000
Subject: Re: Global Variables
I got so much mail about and the object location manager, so
I'll continue ...
To make the thing truly portable, regardless of partition,
you need to register the object with a name that is made
up on the fly.
The easisest way to do this is to make up a name composed of
nodename (hopefully unique) plus the process ID. This should
guarantee that you get to the correct object even if there are
several instances around.
Get the nodename from the operating system, then use the partition
agent to ask for the PID. Form a unique name by concatenating these
two piecies of information.
// set up this app's subdirectory namespace
ObjName : TextData = new(Value = '/MyApp/');
// add nodename
ObjName.Concat(task.part.operatingsystem.nodename);
// get PID
Partition : ActivePartitionAgent
= ActivePartitionAgent(task.part.ActPartAgent);
Instrument : ConfigValueInst
= ConfigValueInst(Partition.FindInstrument('ProcessID'));
// add PID to name
Objname.Concat(Instrument.GetData.TextValue);
Now register an anchored object with the object location
manager
// get the object location manager
olm : ObjectLocationMgr;
olm = task.Part.ObjectLocationMgr;
// register my object with the name
olm.RegisterObject(name = Objname, object = MyObj);
Once it's registered, ask the object location manager for a handle
so we can use it. Build the name, get hold of the object
location manager, as above, then invoke BindObject on it.
theObj =
(ClassOfMyObj)(olm.BindObject(name=Objname, classType=ClassOfMyObj));
If the names are formed in the same way, this call should return
a handle to the object of message duration - you can set up
session or transaction duration if required in the RegisterObject
call.
In some versions of Forte, before V.2.F.0, this call not work for
objects located in the same partition.
To get at the instruments, you will need to include the SystemMonitor
Library.
To come back to some other points, as Tom Wynant points out, you can
have a user visible service object in a server partition.
The problem comes when what you really want is the same user visible
service object in lots of different partitions so that you can offer
the same service - but locally.
Today there is no way to do this oustide of client partitions without
resorting to something similar to that presented above.
- David
David Bell Tel : +44 1344 482100
Voice mail : +44 1344 353716
Forte Software Limited Mobile : +44 378 300613
Apex House
London Road Email : mailto: [email protected]
Bracknell Web : http://www.forte.com
Berkshire
RG12 2XH
UK
From: Pierre Gelli <[email protected]>
Date: Tue, 15 Apr 1997 09:09:39 +0200
Subject: Re: Global Variables
Hello folks,
Here is my idea on the topic.
Although one normally doesn't need global variables in a OO system, there
are cases when it's useful : a read cache of data available in the local
active partition. This saves the overhead of accessing the data on a
remote=
SO.
I read the solutions described by David Bell (location manager) and David
Krieger (hack of the partition.appTitle).
There is another way I think is a bit cleaner.
It takes benefit of the fact that a custom system agent can be attached
an
object (in our case the local cache containing the global variables).
Any active partition of the application then contains one such custom
agent.
Any class needing a global variable instantiates a small object, which is
a
manager of the custom agent. Its purpose is to ask the active partition
for
the custom agent, and then for the cache. If the agent doesn't exist it
creates it as well has the local cache; if the agent exists, it returns
the
cache.
There is a cache class.
It is derived into one class to be the "cache server" broadcasting an
event
when some cache data changes. This class is used to create a cache
server=
SO.
The cache class is also derived into a "local cache" class. It knows how
to
initialize it from the cache server. It listens to the event for updating
its local data from the cache server SO when needed.
Enough for the machinery.
Then, for any instance of a class that needs a global variable,
only two lines of code are needed, at initialization time, to get a
reference to the local cache of the partition, then a global variable
isaccessed as if part of a local object. This is quite affordable.
This design guaranties that there is automatically one and only one
up-to-date cache object in any active partition (running on a client or
on a
server). The local cache is seen as a local object by all objects that
use
it (no SO there). This design makes no assumption on the partitioning
that
will take place later. Which is I think one key strength of Fort=E9.
If one is interested I can ship some code that illustrates these ideas.
Hope this helps.
Pierre Gelli
ADP GSI
Payroll and Human Resources Management
72-78, Grande Rue, F-92310 SEVRES
phone : +33 1 41 14 86 42 (direct) +33 1 41 14 85 00 (reception desk)
fax : +33 1 41 14 85 99
From: Bryan Gentile <[email protected]>
Date: Tue, 15 Apr 1997 09:01:35 -0400
Subject: Using the Edit commands in a menu
I was wondering if anyone knows how to code for the edit menu submenu
items
like cut, copy, and paste. I am trying to use these in my menu, but I
cannot find anything about how to code for them. Is there anything in
the
help or any examples to look at. I have been unsuccessful in finding
anything about this.
Thanks
From: [email protected]
Date: Tue, 15 Apr 1997 9:08:01 -0400 (EDT)
Subject: Re: Global Variables
[email protected] writes:
<Snip!>
Unfortunately all Forte Service Objects share a single name
space. I thought from the documentation that User Visible
Service Objects would work for me. However, when I tried User
Visible Service Objects, they didn't quite do the trick because
what I wanted was identically named service objects that resolve
to a different local instance for each partition.You're right. You can put the user-visible service object in any
partition you like, but it must go in one and only one
partition. Rats. I can see why it's this way (based on the
minimal implementation of the name server), but I can think of
some good reasons why it shouldn't be. In fact, I may need to
move some methods around based on this discussion. Again, rats!
Tom Wyant
"The greatest danger of communication is the illusion that it has
occurred." (wish I knew who said that!).
From: [email protected]
Date: Tue, 15 Apr 1997 09:54:10 -0500
Subject: Re: How does deep copy apply to arrays?
Copy option always copies deep. Remember, also if you pass the array
accross partitions, whether you specify copy or not, it is going to copy
and copy deep.
In an array, I am not sure if have the problem, because unless the array
in-turn holds a huge tree, the array object may be wide, but not deep.
Some thing to think about??
Venkat
End of forte-users-digest V1 #322
*********************************Re: "We wish to eliminate any object references to the service object's
partition. Any insight would be greatly appreciated." from Van Vuong
<[email protected]>
This was in regards to copying a set of object from a server to client.
An implicit clone is being done. This also copyies objects they want to
remain on the server.
I believe the normal method of doing this is to anchor the server side
objects. Then when the deep clone occurs, it stops at the anchored
objects generating a proxy. That can also have other affects you do not
want but will at least stop the copying.
From: owner-forte-users-digest
Sent: Tuesday, April 15, 1997 8:09 AM
To: forte-users-digest
Subject: forte-users-digest V1 #322
forte-users-digest Tuesday, 15 April 1997 Volume 01 :
Number 322
How does deep copy apply to arrays?
Re: Global Variables
Re: Global Variables
Using the Edit commands in a menu
Re: Global Variables
Re: How does deep copy apply to arrays?
From: Van Vuong <[email protected]>
Date: Mon, 14 Apr 1997 17:16:46 -0500
Subject: How does deep copy apply to arrays?
I have a service object that has a method that returns an array of
objects. The return type for the method is defined with the copy option.
I found documentation that states that the copy option creates a deep
copy of the return variable on the partition that called the method.
My question is: If the return type for the method is an array of
objects, will the copy option create copies of all objects/elements in
the array?
We wish to eliminate any object references to the service object's
partition. Any insight would be greatly appreciated.
Thanks in advance,
Van Vuong
Phone: 972.985.5289
Pager: 972.320.2232
VoiceNow Pager: 972.330.0822
E-mail: [email protected]
PAGE NET
From: David Bell <[email protected]>
Date: Mon, 14 Apr 1997 22:44:19 +0000
Subject: Re: Global Variables
I got so much mail about and the object location manager, so
I'll continue ...
To make the thing truly portable, regardless of partition,
you need to register the object with a name that is made
up on the fly.
The easisest way to do this is to make up a name composed of
nodename (hopefully unique) plus the process ID. This should
guarantee that you get to the correct object even if there are
several instances around.
Get the nodename from the operating system, then use the partition
agent to ask for the PID. Form a unique name by concatenating these
two piecies of information.
// set up this app's subdirectory namespace
ObjName : TextData = new(Value = '/MyApp/');
// add nodename
ObjName.Concat(task.part.operatingsystem.nodename);
// get PID
Partition : ActivePartitionAgent
= ActivePartitionAgent(task.part.ActPartAgent);
Instrument : ConfigValueInst
= ConfigValueInst(Partition.FindInstrument('ProcessID'));
// add PID to name
Objname.Concat(Instrument.GetData.TextValue);
Now register an anchored object with the object location
manager
// get the object location manager
olm : ObjectLocationMgr;
olm = task.Part.ObjectLocationMgr;
// register my object with the name
olm.RegisterObject(name = Objname, object = MyObj);
Once it's registered, ask the object location manager for a handle
so we can use it. Build the name, get hold of the object
location manager, as above, then invoke BindObject on it.
theObj =
(ClassOfMyObj)(olm.BindObject(name=Objname, classType=ClassOfMyObj));
If the names are formed in the same way, this call should return
a handle to the object of message duration - you can set up
session or transaction duration if required in the RegisterObject
call.
In some versions of Forte, before V.2.F.0, this call not work for
objects located in the same partition.
To get at the instruments, you will need to include the SystemMonitor
Library.
To come back to some other points, as Tom Wynant points out, you can
have a user visible service object in a server partition.
The problem comes when what you really want is the same user visible
service object in lots of different partitions so that you can offer
the same service - but locally.
Today there is no way to do this oustide of client partitions without
resorting to something similar to that presented above.
- David
David Bell Tel : +44 1344 482100
Voice mail : +44 1344 353716
Forte Software Limited Mobile : +44 378 300613
Apex House
London Road Email : mailto: [email protected]
Bracknell Web : http://www.forte.com
Berkshire
RG12 2XH
UK
From: Pierre Gelli <[email protected]>
Date: Tue, 15 Apr 1997 09:09:39 +0200
Subject: Re: Global Variables
Hello folks,
Here is my idea on the topic.
Although one normally doesn't need global variables in a OO system, there
are cases when it's useful : a read cache of data available in the local
active partition. This saves the overhead of accessing the data on a
remote=
SO.
I read the solutions described by David Bell (location manager) and David
Krieger (hack of the partition.appTitle).
There is another way I think is a bit cleaner.
It takes benefit of the fact that a custom system agent can be attached
an
object (in our case the local cache containing the global variables).
Any active partition of the application then contains one such custom
agent.
Any class needing a global variable instantiates a small object, which is
a
manager of the custom agent. Its purpose is to ask the active partition
for
the custom agent, and then for the cache. If the agent doesn't exist it
creates it as well has the local cache; if the agent exists, it returns
the
cache.
There is a cache class.
It is derived into one class to be the "cache server" broadcasting an
event
when some cache data changes. This class is used to create a cache
server=
SO.
The cache class is also derived into a "local cache" class. It knows how
to
initialize it from the cache server. It listens to the event for updating
its local data from the cache server SO when needed.
Enough for the machinery.
Then, for any instance of a class that needs a global variable,
only two lines of code are needed, at initialization time, to get a
reference to the local cache of the partition, then a global variable
isaccessed as if part of a local object. This is quite affordable.
This design guaranties that there is automatically one and only one
up-to-date cache object in any active partition (running on a client or
on a
server). The local cache is seen as a local object by all objects that
use
it (no SO there). This design makes no assumption on the partitioning
that
will take place later. Which is I think one key strength of Fort=E9.
If one is interested I can ship some code that illustrates these ideas.
Hope this helps.
Pierre Gelli
ADP GSI
Payroll and Human Resources Management
72-78, Grande Rue, F-92310 SEVRES
phone : +33 1 41 14 86 42 (direct) +33 1 41 14 85 00 (reception desk)
fax : +33 1 41 14 85 99
From: Bryan Gentile <[email protected]>
Date: Tue, 15 Apr 1997 09:01:35 -0400
Subject: Using the Edit commands in a menu
I was wondering if anyone knows how to code for the edit menu submenu
items
like cut, copy, and paste. I am trying to use these in my menu, but I
cannot find anything about how to code for them. Is there anything in
the
help or any examples to look at. I have been unsuccessful in finding
anything about this.
Thanks
From: [email protected]
Date: Tue, 15 Apr 1997 9:08:01 -0400 (EDT)
Subject: Re: Global Variables
[email protected] writes:
<Snip!>
Unfortunately all Forte Service Objects share a single name
space. I thought from the documentation that User Visible
Service Objects would work for me. However, when I tried User
Visible Service Objects, they didn't quite do the trick because
what I wanted was identically named service objects that resolve
to a different local instance for each partition.You're right. You can put the user-visible service object in any
partition you like, but it must go in one and only one
partition. Rats. I can see why it's this way (based on the
minimal implementation of the name server), but I can think of
some good reasons why it shouldn't be. In fact, I may need to
move some methods around based on this discussion. Again, rats!
Tom Wyant
"The greatest danger of communication is the illusion that it has
occurred." (wish I knew who said that!).
From: [email protected]
Date: Tue, 15 Apr 1997 09:54:10 -0500
Subject: Re: How does deep copy apply to arrays?
Copy option always copies deep. Remember, also if you pass the array
accross partitions, whether you specify copy or not, it is going to copy
and copy deep.
In an array, I am not sure if have the problem, because unless the array
in-turn holds a huge tree, the array object may be wide, but not deep.
Some thing to think about??
Venkat
End of forte-users-digest V1 #322
********************************* -
Hi,
Now we are using IIS/ASP page to connect to EJB. This is the code below:
Dim mobjHome
Dim mobjBean
dim mobjList
Private Function BindObjects()
Dim objTemp
'Handle errors
On Error resume next
'Initialize function value
BindObjects = True
'Access WebLogic Server. Set here to localhost, port 7001.
Set objTemp = GetObject("objref:TUVPVwEAAAAABAIAAAAAAMAAAAAAAABGABAAAAAAAABKaW50ZWdyYVRhbGtUb01lV2hhdHNBbGxUaGlzVGhlbhkAEgAHAGwAbwBjAGEAbABoAG8AcwB0AFsANwAwADAAMQBdAAAAAAAKAP//AAAAAAAAAAAAAA==:")
if err.number>0 then
BindObjects = False
response.write "Error number:" & cstr(Err.Number) & "<BR>"
response.write "Error Desc:" & Err.Description & "<BR>"
'Notify user and end sub
response.write "An error occurred while GetObject.<br>"
exit function
end if
'Bind the EJB AccountHome object via JNDI
Set mobjHome = objTemp.get("examplesServer:jndi:ejb20-containerManaged-AccountHome")
if err.number>0 then
BindObjects = False
response.write "Error number:" & cstr(Err.Number) & "<BR>"
response.write "Error Desc:" & Err.Description & "<BR>"
'Notify user and end sub
response.write "An error occurred while objTemp.Get.<br>"
exit function
end if
Set mobjBean = mobjHome.create()
if err.number>0 then
BindObjects = False
response.write "Error number:" & cstr(Err.Number) & "<BR>"
response.write "Error Desc:" & Err.Description & "<BR>"
'Notify user and end sub
response.write "An error occurred while mobjHome.create().<br>"
exit function
end if
'Find accounts with a balance > LARGE_BALANCE
Set mobjList = FindBigTypes(700)
if err.number>0 then
BindObjects = False
response.write "Error number:" & cstr(Err.Number) & "<BR>"
response.write "Error Desc:" & Err.Description & "<BR>"
'Notify user and end sub
response.write "An error occurred while FindBigTypes.<br>"
exit function
end if
'Exit before error code
Exit Function
End Function
There is an error occured when running
Set mobjHome = objTemp.get("examplesServer:jndi:ejb20-containerManaged-AccountHome")
It told me "Access denied". Is there any setting I need to do in Weblogic server?
Thank you!
Best regards!
XianyuADF SecurityContext is populated after execution of "/adfAuthentication" servlet so you can't get roles with ADFContext.getCurrent().getSecurityContext().getUserRoles() in your login method.
Maybe you can retrieve roles with:
Set<Principal> allPrincipals = mySubject.getPrincipals();
for (Principal principal : allPrincipals) {
if(principal instanceof WLSGroupImpl ) {
roles.add(principal.getName());
(note that this will retrieve 'enterprise' roles and not application roles)
Dario -
J2ee server problem with details
I 'm working on Win 2000 machine.
While starting the j2ee server from command line
with the command
j2ee -verbose
I am getting error message as follows
J2EE server listen port: 1050
Naming service started:1050
Exception in thread "main" java.lang.NoSuchMethodError
at com.sun.corba.ee.internal.corba.AnyImpl.createTypeCodeForClass(AnyImp
l.java:1256)
at com.sun.corba.ee.internal.iiop.ShutdownUtilDelegate.createTypeCode(Sh
utdownUtilDelegate.java:223)
at com.sun.corba.ee.internal.iiop.ShutdownUtilDelegate.writeAny(Shutdown
UtilDelegate.java:178)
at javax.rmi.CORBA.Util.writeAny(Util.java:80)
at org.omg.stub.com.sun.enterprise.naming._SerialContextProvider_Stub.re
bind(Unknown Source)
at com.sun.enterprise.naming.SerialContext.rebind(SerialContext.java:188
at com.sun.enterprise.naming.SerialContext.rebind(SerialContext.java:202
at javax.naming.InitialContext.rebind(InitialContext.java:370)
at com.sun.enterprise.naming.NamingManagerImpl.publishObject(NamingManag
erImpl.java:192)
at com.sun.enterprise.naming.NamingManagerImpl.publishObject(NamingManag
erImpl.java:149)
at com.sun.enterprise.server.J2EEServer.bindObject(J2EEServer.java:718)
at com.sun.enterprise.server.J2EEServer.createServerObject(J2EEServer.ja
va:473)
at com.sun.enterprise.server.J2EEServer.run(J2EEServer.java:244)
at com.sun.enterprise.server.J2EEServer.main(J2EEServer.java:972)
Please helpJ2EE server listen port: 1050
org.omg.CORBA.INTERNAL: vmcid: SUN minor code: 209 completed: No
at com.sun.corba.ee.internal.iiop.GIOPImpl.createListener(GIOPImpl.java:
256)
at com.sun.corba.ee.internal.iiop.GIOPImpl.getEndpoint(GIOPImpl.java:205
at com.sun.corba.ee.internal.iiop.GIOPImpl.initEndpoints(GIOPImpl.java:1
40)
at com.sun.corba.ee.internal.POA.POAORB.getServerEndpoint(POAORB.java:49
2)
at com.sun.corba.ee.internal.POA.POAImpl.pre_initialize(POAImpl.java:156
at com.sun.corba.ee.internal.POA.POAImpl.<init>(POAImpl.java:114)
at com.sun.corba.ee.internal.POA.POAORB.makeRootPOA(POAORB.java:114)
at com.sun.corba.ee.internal.POA.POAORB$1.evaluate(POAORB.java:132)
at com.sun.corba.ee.internal.core.Future.evaluate(Future.java:21)
at com.sun.corba.ee.internal.corba.ORB.resolveInitialReference(ORB.java:
2488)
at com.sun.corba.ee.internal.corba.ORB.resolve_initial_references(ORB.ja
va:2423)
at com.sun.enterprise.server.J2EEServer.run(J2EEServer.java:196)
at com.sun.enterprise.server.J2EEServer.main(J2EEServer.java:972)
java.lang.RuntimeException: Unable to create ORB. Possible causes include TCP/IP
ports in use by another process
at com.sun.enterprise.server.J2EEServer.run(J2EEServer.java:206)
at com.sun.enterprise.server.J2EEServer.main(J2EEServer.java:972)
java.lang.RuntimeException: Unable to create ORB. Possible causes include TCP/IP
ports in use by another process
at com.sun.enterprise.server.J2EEServer.run(J2EEServer.java:206)
at com.sun.enterprise.server.J2EEServer.main(J2EEServer.java:972)
java.lang.RuntimeException: Unable to create ORB. Possible causes include TCP/IP
ports in use by another process
at com.sun.enterprise.server.J2EEServer.run(J2EEServer.java:346)
at com.sun.enterprise.server.J2EEServer.main(J2EEServer.java:972)
J2EE server reported the following error: Unable to create ORB. Possible causes
include TCP/IP ports in use by another process
Error executing J2EE server ...
C:\Apps\J2SDKE~1.1\bin>j2ee.bat
J2EE server listen port: 1050
org.omg.CORBA.INTERNAL: vmcid: SUN minor code: 209 completed: No
at com.sun.corba.ee.internal.iiop.GIOPImpl.createListener(GIOPImpl.java:
256)
at com.sun.corba.ee.internal.iiop.GIOPImpl.getEndpoint(GIOPImpl.java:205
at com.sun.corba.ee.internal.iiop.GIOPImpl.initEndpoints(GIOPImpl.java:1
40)
at com.sun.corba.ee.internal.POA.POAORB.getServerEndpoint(POAORB.java:49
2)
at com.sun.corba.ee.internal.POA.POAImpl.pre_initialize(POAImpl.java:156
at com.sun.corba.ee.internal.POA.POAImpl.<init>(POAImpl.java:114)
at com.sun.corba.ee.internal.POA.POAORB.makeRootPOA(POAORB.java:114)
at com.sun.corba.ee.internal.POA.POAORB$1.evaluate(POAORB.java:132)
at com.sun.corba.ee.internal.core.Future.evaluate(Future.java:21)
at com.sun.corba.ee.internal.corba.ORB.resolveInitialReference(ORB.java:
2488)
at com.sun.corba.ee.internal.corba.ORB.resolve_initial_references(ORB.ja
va:2423)
at com.sun.enterprise.server.J2EEServer.run(J2EEServer.java:196)
at com.sun.enterprise.server.J2EEServer.main(J2EEServer.java:972)
java.lang.RuntimeException: Unable to create ORB. Possible causes include TCP/IP
ports in use by another process
at com.sun.enterprise.server.J2EEServer.run(J2EEServer.java:206)
at com.sun.enterprise.server.J2EEServer.main(J2EEServer.java:972)
java.lang.RuntimeException: Unable to create ORB. Possible causes include TCP/IP
ports in use by another process
at com.sun.enterprise.server.J2EEServer.run(J2EEServer.java:206)
at com.sun.enterprise.server.J2EEServer.main(J2EEServer.java:972)
java.lang.RuntimeException: Unable to create ORB. Possible causes include TCP/IP
ports in use by another process
at com.sun.enterprise.server.J2EEServer.run(J2EEServer.java:346)
at com.sun.enterprise.server.J2EEServer.main(J2EEServer.java:972)
J2EE server reported the following error: Unable to create ORB. Possible causes
include TCP/IP ports in use by another process
Error executing J2EE server ...
C:\Apps\J2SDKE~1.1\bin>j2ee.bat -verbose
J2EE server listen port: 1050
org.omg.CORBA.INTERNAL: vmcid: SUN minor code: 209 completed: No
at com.sun.corba.ee.internal.iiop.GIOPImpl.createListener(GIOPImpl.java:
256)
at com.sun.corba.ee.internal.iiop.GIOPImpl.getEndpoint(GIOPImpl.java:205
at com.sun.corba.ee.internal.iiop.GIOPImpl.initEndpoints(GIOPImpl.java:1
40)
at com.sun.corba.ee.internal.POA.POAORB.getServerEndpoint(POAORB.java:49
2)
at com.sun.corba.ee.internal.POA.POAImpl.pre_initialize(POAImpl.java:156
at com.sun.corba.ee.internal.POA.POAImpl.<init>(POAImpl.java:114)
at com.sun.corba.ee.internal.POA.POAORB.makeRootPOA(POAORB.java:114)
at com.sun.corba.ee.internal.POA.POAORB$1.evaluate(POAORB.java:132)
at com.sun.corba.ee.internal.core.Future.evaluate(Future.java:21)
at com.sun.corba.ee.internal.corba.ORB.resolveInitialReference(ORB.java:
2488)
at com.sun.corba.ee.internal.corba.ORB.resolve_initial_references(ORB.ja
va:2423)
at com.sun.enterprise.server.J2EEServer.run(J2EEServer.java:196)
at com.sun.enterprise.server.J2EEServer.main(J2EEServer.java:972)
java.lang.RuntimeException: Unable to create ORB. Possible causes include TCP/IP
ports in use by another process
at com.sun.enterprise.server.J2EEServer.run(J2EEServer.java:206)
at com.sun.enterprise.server.J2EEServer.main(J2EEServer.java:972)
java.lang.RuntimeException: Unable to create ORB. Possible causes include TCP/IP
ports in use by another process
at com.sun.enterprise.server.J2EEServer.run(J2EEServer.java:206)
at com.sun.enterprise.server.J2EEServer.main(J2EEServer.java:972)
java.lang.RuntimeException: Unable to create ORB. Possible causes include TCP/IP
ports in use by another process
at com.sun.enterprise.server.J2EEServer.run(J2EEServer.java:346)
at com.sun.enterprise.server.J2EEServer.main(J2EEServer.java:972)
J2EE server reported the following error: Unable to create ORB. Possible causes
include TCP/IP ports in use by another process
Error executing J2EE server ...
C:\Apps\J2SDKE~1.1\bin>j2ee.bat -verbose
J2EE server listen port: 1050
org.omg.CORBA.INTERNAL: vmcid: SUN minor code: 209 completed: No
at com.sun.corba.ee.internal.iiop.GIOPImpl.createListener(GIOPImpl.java:
256)
at com.sun.corba.ee.internal.iiop.GIOPImpl.getEndpoint(GIOPImpl.java:205
at com.sun.corba.ee.internal.iiop.GIOPImpl.initEndpoints(GIOPImpl.java:1
40)
at com.sun.corba.ee.internal.POA.POAORB.getServerEndpoint(POAORB.java:49
2)
at com.sun.corba.ee.internal.POA.POAImpl.pre_initialize(POAImpl.java:156
at com.sun.corba.ee.internal.POA.POAImpl.<init>(POAImpl.java:114)
at com.sun.corba.ee.internal.POA.POAORB.makeRootPOA(POAORB.java:114)
at com.sun.corba.ee.internal.POA.POAORB$1.evaluate(POAORB.java:132)
at com.sun.corba.ee.internal.core.Future.evaluate(Future.java:21)
at com.sun.corba.ee.internal.corba.ORB.resolveInitialReference(ORB.java:
2488)
at com.sun.corba.ee.internal.corba.ORB.resolve_initial_references(ORB.ja
va:2423)
at com.sun.enterprise.server.J2EEServer.run(J2EEServer.java:196)
at com.sun.enterprise.server.J2EEServer.main(J2EEServer.java:972)
java.lang.RuntimeException: Unable to create ORB. Possible causes include TCP/IP
ports in use by another process
at com.sun.enterprise.server.J2EEServer.run(J2EEServer.java:206)
at com.sun.enterprise.server.J2EEServer.main(J2EEServer.java:972)
java.lang.RuntimeException: Unable to create ORB. Possible causes include TCP/IP
ports in use by another process
at com.sun.enterprise.server.J2EEServer.run(J2EEServer.java:206)
at com.sun.enterprise.server.J2EEServer.main(J2EEServer.java:972)
java.lang.RuntimeException: Unable to create ORB. Possible causes include TCP/IP
ports in use by another process
at com.sun.enterprise.server.J2EEServer.run(J2EEServer.java:346)
at com.sun.enterprise.server.J2EEServer.main(J2EEServer.java:972)
J2EE server reported the following error: Unable to create ORB. Possible causes
include TCP/IP ports in use by another process
Error executing J2EE server ...
how bout this problem?
Maybe you are looking for
-
Do I need to delete my photo,s once I have downloaded them on to my computer?
do i need to delete my photo,s from my iphone after saving on to a computer? will this create space?
-
No "ANGLE" Option for Linear Gradients in Motion 4!
Referring to the help section for Motion 4, there should be an "angle" tool for linear gradients, but there's not! I have a linear gradient that runs top to bottom and I want it to run left to right. Is there any other way to do this without having t
-
Picking up .dat files from server?
Hi Guys, How can u pick up all the files from a specific folder and process them? I dont know the name of those files and they could be around 30-40 files? pls help me thanks, Sac
-
So, this issue I have is that I can connect my iPad 3 to my home sharing network through iTunes, and my iPad can also connect to mirror on Apple TV. I have no idea why Apple TV cannot connect to my home sharing through iTunes. I have downloaded the
-
Pre-authentication failed in krb
Hi All, Wee also facing the same issue, but in a different way. our java application accepts first 100(around) krb auth requests and the rest of the requests are droped out, during the droping it simply show the message like pre-authentication failed