[JBoss JIRA] Created: (JBREM-579) transporter does not handle reflection conversion for primitive types
by Tom Elrod (JIRA)
transporter does not handle reflection conversion for primitive types
---------------------------------------------------------------------
Key: JBREM-579
URL: http://jira.jboss.com/jira/browse/JBREM-579
Project: JBoss Remoting
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: transporter
Affects Versions: 2.0.0.CR1 (Boon)
Reporter: Tom Elrod
Assigned To: Tom Elrod
Fix For: 2.0.0.GA (Boon)
When the TransporterHandler receives an invocation request and uses reflection to make the call on the target object, it does not take into account primitive types for the signature type. So need to explicitly check for primitive types in method signature and do manual conversion of type provided by reflection to the real primitive class type. For example, reflection will say that int type argument is 'int' and needs to be converted to Integer.TYPE.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
18 years, 7 months
[JBoss JIRA] Created: (JBREM-576) deadlock with socket invoker
by Tom Elrod (JIRA)
deadlock with socket invoker
----------------------------
Key: JBREM-576
URL: http://jira.jboss.com/jira/browse/JBREM-576
Project: JBoss Remoting
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: transport
Affects Versions: 2.0.0.CR1 (Boon)
Reporter: Tom Elrod
Assigned To: Tom Elrod
Priority: Critical
Fix For: 2.0.0.GA (Boon)
---THIS THREAD OWNS THE LOCK ON LinkedList<E> (id=38)---
Thread [Thread-3666] (Suspended)
owns: BufferedInputStream (id=49)
owns: LinkedList<E> (id=38)
SocketInputStream.socketRead0(FileDescriptor, byte[], int, int, int) line: not available [native method]
SocketInputStream.read(byte[], int, int) line: 129
BufferedInputStream.fill() line: 218
BufferedInputStream.read1(byte[], int, int) line: 256
BufferedInputStream.read(byte[], int, int) line: 313
ObjectInputStream$PeekInputStream.read(byte[], int, int) line: 2217
ObjectInputStream$PeekInputStream.readFully(byte[], int, int) line: 2230
ObjectInputStream$BlockDataInputStream.readShort() line: 2698
ObjectInputStreamWithClassLoader(ObjectInputStream).readStreamHeader() line: 750
ObjectInputStreamWithClassLoader(ObjectInputStream).<init>(InputStream) line: 268
ObjectInputStreamWithClassLoader.<init>(InputStream, ClassLoader) line: 73
JavaSerializationManager.createInput(InputStream, ClassLoader) line: 52
ClientSocketWrapper.createInputStream(String, Socket) line: 83
ClientSocketWrapper.createStreams(Socket, Map) line: 76
ClientSocketWrapper.<init>(Socket, Map, Integer) line: 54
GeneratedConstructorAccessor32.newInstance(Object[]) line: not available
DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 27
Constructor<T>.newInstance(Object...) line: 494
SocketClientInvoker.createClientSocket(Socket, int, Map) line: 158
SocketClientInvoker(MicroSocketClientInvoker).getConnection() line: 688
SocketClientInvoker(MicroSocketClientInvoker).transport(String, Object, Map, Marshaller, UnMarshaller) line: 314
SocketClientInvoker(MicroRemoteClientInvoker).invoke(InvocationRequest) line: 116
Client.invoke(Object, Map, InvokerLocator) line: 612
Client.invoke(Object, Map) line: 604
JBossRemotingRemoteCommunicator.send(Command) line: 430
GenericCommandClient(AbstractCommandClient).invoke(Command) line: 167
ClientCommandSender.send(Command) line: 820
ClientCommandSenderTask.send(ClientCommandSender, CommandAndCallback) line: 203
ClientCommandSenderTask.call() line: 103
FutureResult$1.run() line: not available
Thread.run() line: 595
---THE NEXT TWO THREADS ARE WAITING ON THAT THREAD FOR LinkedList<E> id=38---
Thread [main] (Suspended)
owns: HashMap<K,V> (id=53)
owns: SSLSocketClientInvoker (id=54)
owns: Object (id=55)
owns: Object (id=56)
owns: boolean[] (id=43)
waiting for: LinkedList<E> (id=38)
MicroSocketClientInvoker.clearPool(ServerAddress) line: 531
MicroSocketClientInvoker.clearPools() line: 563
SSLSocketClientInvoker(MicroSocketClientInvoker).handleDisconnect() line: 275
SSLSocketClientInvoker(MicroRemoteClientInvoker).disconnect() line: 287
InvokerRegistry.destroyClientInvoker(InvokerLocator, Map) line: 225
Client.disconnect() line: 530
JBossRemotingRemoteCommunicator.disconnect() line: 406
ClientCommandSender.stopSending(boolean) line: 725
AgentMain.shutdown() line: 452
AgentCommTest.tearDown() line: 148
GeneratedMethodAccessor26.invoke(Object, Object[]) line: not available
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 585
MethodHelper.invokeMethod(Method, Object, Object[]) line: 552
Invoker.invokeConfigurationMethod(Object[], ITestNGMethod, Object[], boolean, ITestResult) line: 318
Invoker.invokeConfigurations(IClass, ITestNGMethod[], XmlSuite, Map<String,String>, Object) line: 152
Invoker.invokeMethod(Object[], ITestNGMethod, Object[], XmlSuite, Map<String,String>, ITestClass, ITestNGMethod[], ITestNGMethod[], ConfigurationGroupMethods) line: 483
Invoker.invokeTestMethods(ITestNGMethod, XmlSuite, Map<String,String>, ITestNGMethod[], int, ConfigurationGroupMethods) line: 778
TestMethodWorker.run() line: 105
TestRunner.privateRun(XmlTest) line: 682
TestRunner.run() line: 566
SuiteRunner.privateRun() line: 220
SuiteRunner.run() line: 146
TestNG.createAndRunSuiteRunners(XmlSuite) line: 713
TestNG.runSuitesLocally() line: 676
TestNGExecutor.executeTestNG(SurefireTestSuite, String, XmlSuite, ReporterManager) line: 64
TestNGXmlTestSuite.execute(ReporterManager, ClassLoader) line: 75
Surefire.run(List, List, ClassLoader, ClassLoader) line: 129
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 585
SurefireBooter.runSuitesInProcess() line: 225
SurefireBooter.main(String[]) line: 747
Thread [Thread-3680] (Suspended)
waiting for: LinkedList<E> (id=38)
owned by: Thread [Thread-3666] (Suspended)
SSLSocketClientInvoker(MicroSocketClientInvoker).getConnection() line: 652
SSLSocketClientInvoker(MicroSocketClientInvoker).transport(String, Object, Map, Marshaller, UnMarshaller) line: 314
SSLSocketClientInvoker(MicroRemoteClientInvoker).invoke(InvocationRequest) line: 116
Client.invoke(Object, Map, InvokerLocator) line: 612
Client.invoke(Object, Map) line: 604
JBossRemotingRemoteCommunicator.send(Command) line: 430
GenericCommandClient(AbstractCommandClient).invoke(Command) line: 167
ClientCommandSender.send(Command) line: 820
ClientCommandSenderTask.send(ClientCommandSender, CommandAndCallback) line: 203
ClientCommandSenderTask.call() line: 103
FutureResult$1.run() line: not available
Thread.run() line: 595
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
18 years, 7 months
[JBoss JIRA] Created: (JBREM-575) local client invoker should convert itself to remote client invoker when being serialized
by Tom Elrod (JIRA)
local client invoker should convert itself to remote client invoker when being serialized
-----------------------------------------------------------------------------------------
Key: JBREM-575
URL: http://jira.jboss.com/jira/browse/JBREM-575
Project: JBoss Remoting
Issue Type: Feature Request
Security Level: Public (Everyone can see)
Components: general
Affects Versions: 2.0.0.CR1 (Boon)
Reporter: Tom Elrod
Assigned To: Tom Elrod
Fix For: 2.0.0.GA (Boon)
Is possible, especially if using transporters, to send a remoting client over the wire to be used somewhere else transparently. However, this currently only works if the client invoker is a remote client invoker. If is a local client invoker, then obviously won't be able to make local reference to the server since would be in another process. Need to change behavior of local client invoker to during serialization/deserialization to convert itself to a remote client invoker so can be passed around transparently over the network.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
18 years, 7 months
[JBoss JIRA] Created: (JBREM-564) Default client socket factory configured by a system property
by Roland R?z (JIRA)
Default client socket factory configured by a system property
-------------------------------------------------------------
Key: JBREM-564
URL: http://jira.jboss.com/jira/browse/JBREM-564
Project: JBoss Remoting
Issue Type: Feature Request
Security Level: Public (Everyone can see)
Reporter: Roland R?z
Assigned To: Tom Elrod
To activate an ssl socket factory for the jobs remoting on the in a JBoss standalone client, the default socket factory of a VM can be configured by a java.security configuration activated with the java.security.properties=.../java.security System Property.
Providing always such a configuration file is complicated. A simpler solution is a system property providing the name of the socket factory class:
Here a possible implementation:
Class org.jboss.remoting.security.SSLSocketBuilder:
public SocketFactory createSSLSocketFactory() throws IOException,
NoSuchAlgorithmException, KeyStoreException, CertificateException,
KeyManagementException {
SocketFactory sf = null;
if (useSSLSocketFactory) {
String defaultFactoryName = System
.getProperty("jboss.remoting.defaultSocketFactory");
if (defaultFactoryName != null) {
try {
Class sfClass = Thread.currentThread()
.getContextClassLoader().loadClass(
defaultFactoryName);
Method m = sfClass.getMethod("getDefault", null);
if (m == null) {
throw new RuntimeException(
"Could not create the socket factory "
+ defaultFactoryName
+ " because the class "
+ sfClass
+ " doesn't provide the getDefault method.");
}
sf = (SocketFactory) m.invoke(null, null);
} catch (Exception ex) {
throw new RuntimeException(
"Could not create the socket factory "
+ defaultFactoryName, ex);
}
}
if (sf == null) {
sf = SSLSocketFactory.getDefault();
}
} else {
sf = createCustomSocketFactory();
}
return sf;
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
18 years, 7 months