Java and c struct
Dear All;
i wrote a socket client program with java to communicate
with the server program which was writen by c language;
i got a byte stream from the socket,how can i parse a c struct
into java object?
the c struct received from the server side like this:
struct c_struct
int i[3];
char c[30];
i read it like this:
DataInputStream dis=new DataInputStream(new InputStream(socket.getInputStream()));
byte b[]=new byte[42];
dis.read(b);
so, how can i parse the byte[] into java object?
if not, how can i do?
Well, it looks like you're getting three 4 byte ints and thirty 1 byte chars. Decoding the chars is easy but doing the ints will take a little work. It's probably something like
int i = b[0] + b[1]*256 + b[2]*256*256 + b[3]*256*256*256;or it's the other way around (switch the order of the bytes).
As for how to get it into a Java object, first you need to make an object that holds 30 bytes and 4 ints and takes them in the constructor (hint: use arrays). Voila!
Similar Messages
-
We have no problem using JDK 1.1.5. However, we are using Orbixweb. If
you are accessing the applet and the IOR file from the same host (exact
host name), then one other possibility is the JVM compatibility for your
browser. Using Javasoft's Activator or appletviewer should resolve
that.
-----Original Message-----
From: Kamran Amin [SMTP:[email protected]]
Sent: Tuesday, March 10, 1998 7:48 AM
To: '[email protected]'; '[email protected]'
Subject: RE: Java and Forte
Dan,
We had the same problem as you are having regarding question
one. Make
sure you are
using JDK 1.1.3 or 1.1.4. It did not work for me when I was using JDK
1.1.5. Also you have to
use the gatekeeper to make the applet work. Hope this help.
Kamran Amin
Forte Technical Leader, Software Engineering
[email protected]
203-459-7362
Oxford Health Plans
48 Monroe Turnpike
CT, Trumbull 06611
http://www.oxhp.com/
From: [email protected][SMTP:[email protected]]
Sent: Monday, March 09, 1998 7:49 PM
To: [email protected]
Subject: Re: Java and Forte
1. I have been able to make my Java client appllication call-in to a
Forte service object with success. However the tricky part beginswhen
I try to do the same with a Java applet. I get an exception returned
which is an AppletSecurityException. I understand that running a Java
applet in a browser has two limitations, one being the Java applet
sandbox and the firewall restriction. As I am only running my Java
applet and the Forte service object on the same node, this rules out
the latter.
I have tried running the Gatekeeper from the same directory as myJava
client application, which includes all the client stub files
(including stub files which are generated from Forte supplier plans
such as those in the Framework folder). However, I still receive the
AppletSecurityException.
How can I go about making this operation successful?
**AppletSecurityExceptions can be caused by many problems--trying toaccess
machines other than the class download machine, or trying to accessserver
side classes outside the defined directory structure in the webserver. I'd
look closely at the classes that are being brought into memory (forexample,
Visibroker's ORB shows you each file as it is loaded) and make sureyour web
server is defined correctly. If you follow the Forte technotesclosely, it
usually solves this problem.
2. Has anyone tried implementing a 'fat' client, one that combines a
Forte web application, JavaScript, and a Java applet client toperform
operations such as validation and a tiny bit of data processing allon
the client side, relieveing the application server from such
operations? If yes, how do I implement the solution, and are thereany
tech notes from Forte that specifically tell me how to do this?
**We have created a Java framework that follows many of the designpatterns
and naming conventions as our Forte framework. The Java classes canbe
extended to marshal and unmarshal scalar data structs passed acrossthe ORB
boundary to instantiate 'thick' functional objects on the client, andas much
processing and as many business rules as wanted can be developed inthe
client
Java objects.If you look at the exception information in the iiop manual it
discusses exteneded propties DefaultThrowsClause, ThrowsClause and
IsThrowable.
If you mark your exception class with IsThrowable it will show up in the
IDL as an exception. If you use either DefaultThrowsClause(project) or
ThrowsClause(method) you will get the appropriate raises in the idl.
This will cause the idl2java to produce code which will allow you to catch
the exception.
Tom.
At 09:41 AM 1/29/99 +0100, Giuseppe Sorce wrote:
>
Hi all,
I am currently working to an architecture to establish a communication
between a Forte' server and a Java client, using Visigenic's Visibroker and
IDL mode.
I have problems when I try to raise a Forte' exception from a method
invoked by the Java client; I would like the exception class
(ProductException) not to inherit from the class GenericException, because
the IDL I want to generate must have this structure:
exception ProductException {
string message;
Using this solution, the client application gets blocked waiting forever.
I am currently working with:
- Forte' 3.0.G.2 plus WebEnterprise 1.0.B
- JDK 1.1.5
- Visibroker 3.1
My question is: is it possible to raise an exception from the Forte' side
that is
compliant to the IDL mentioned above?
Of course it should be caught from the Java side.
Thank you in advance
Giuseppe Sorce
CSI Piemonte - C.so Unione Sovietica 216 - 10134 Torino - ITALY
tel. +39-011-3168736
fax +39-011-3168212
e-mail [email protected]
url http://www.csi.it
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/> -
Communication between java and c++, help!
i am c++ programmer and newly to java.
now i am developping a client/server app. i use java transfers data (socket) between client and server, and use c++ to create user interfaces because c++ is easier for interfaces.
my question is:
in a single PC, java needs to tell c++ what info was read from socket and c++ needs to tell java what info will be written to socket.
i want to use 2 files (read and write) as media between java and c++. that is: java writes data to a file and c++ reads from the file, and vice versa.
i know it's not efficient. could you tell me better way to do?
thanks in advance.thanks for reply.
my problem is: socket is fare in java, not fare in c++
(win/nt). could u use server in a non nt-server
machine with c++?I'm not sure what you mean "fair". NT-Server is just a version of NT that Microsoft adds their server products to. Most of which you don't want to use because they are a security nightmare. I think what your asking is can you do the equivalent of Java's ServerSocket in C++. Sure, the socket libraries in Windows (at least last time I checked) were based off the BSD socket libraries. So you would basically do something like:
// Open socket
ss=socket(AF_INET, SOCK_STREAM, 0);
if(ss==-1)
cerr<<"Error opening socket."<<endl;
return 0;
// Fill in address
struct sockaddr_in server;
server.sin_family=AF_INET;
server.sin_port=htons((unsigned short)port);
server.sin_addr.s_addr=INADDR_ANY;
// Bind to port
if(bind(ss, (struct sockaddr *)&server, sizeof(server))==-1)
cerr<<"Could not bind to port "<<port<<"."<<endl;
return 0;
// Ready to accept connections
if(listen(ss, 5)==-1)
cerr<<"Could not listen."<<endl;
return 0;
// Loop to accept connections
while(/* some condition */)
// Accept a connection
int s=accept(ss, 0, 0);
}This should work on any version of windows as long as you have winsock. The example code might need to be changed a little though since I copied it from a Linux program I had. -
Inconsistent java and sql object types
Hi,
I have run into error "Inconsistent java and sql object types"
while mapping a java class to a sql object type. The java class
is just a duplicate of sql data structure and I pretty much
follow the JDBC Developer's GUide's examples (20-43 to 20-45)
to create the mapping java class.
Any one runs into simliar problem or any clues?
Thanks,
Ed
Exception in thread "main" java.sql.SQLException: Inconsistent java and sql object types: InstantiationException:
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210)
at oracle.sql.STRUCT.toClass(STRUCT.java:433)
at oracle.sql.STRUCT.toJdbc(STRUCT.java:366)
at oracle.jdbc.oracore.OracleTypeUPT.unpickle80rec
(OracleTypeUPT.java:236)
at
oracle.jdbc.oracore.OracleTypeCOLLECTION.unpickle80rec_elems
(OracleTypeCOLLECTION.java:553)
at oracle.jdbc.oracore.OracleTypeCOLLECTION.unpickle80rec
(OracleTypeCOLLECTION.java:383)
at oracle.jdbc.oracore.OracleTypeCOLLECTION.unpickle80
(OracleTypeCOLLECTION.java:329)
at oracle.jdbc.oracore.OracleTypeCOLLECTION.unlinearize
(OracleTypeCOLLECTION.java:218)
at oracle.sql.ArrayDescriptor.toJavaArray
(ArrayDescriptor.java:501)
at oracle.sql.ARRAY.getArray(ARRAY.java:197)The safest way would be to use JPublisher to generate the type classes. In your application, you can just use the generated code to manipulate the object.
-
The java and sql object type was not matched
My table(Oracle10.2) has a varying arrays column. For mapping to java classes, I use JDeveloper(10.1.3.1.0) to generate java classes. Then I try to insert a record into this varrying arrays column with java. While it always complaints java.sql.SQLException.the java and sql object type was not matched. I can not find the reason.
My java code:
StructDescriptor structdesc = StructDescriptor.createDescriptor(
"VARRAY_SEQ", con);
int nid=20;
int pid=546;
BigDecimal mynid=new BigDecimal(nid);
mynid=mynid.setScale(0, BigDecimal.ROUND_HALF_UP);
BigDecimal mypid=new BigDecimal(pid);
mypid=mypid.setScale(0, BigDecimal.ROUND_HALF_UP);
Object[] attributes = { "ASDF", mynid, "Developer", mypid,
"rwretw" };
STRUCT Rel = new STRUCT(structdesc, con, attributes);
stmt.setObject(8, Rel);
stmt.execute();
stmt.close();
And the STRUCT is
public RelSeq(String nucl, java.math.BigDecimal neId, String nuor, java.math.BigDecimal pId, String phor) throws SQLException
{ _init_struct(true);
setNucl(nucl);
setNeId(neId);
setNuor(nuor);
setPId(pId);
setPhor(phor);
}My table(Oracle10.2) has a varying arrays column. For mapping to java classes, I use JDeveloper(10.1.3.1.0) to generate java classes. Then I try to insert a record into this varrying arrays column with java. While it always complaints java.sql.SQLException.the java and sql object type was not matched. I can not find the reason.
My java code:
StructDescriptor structdesc = StructDescriptor.createDescriptor(
"VARRAY_SEQ", con);
int nid=20;
int pid=546;
BigDecimal mynid=new BigDecimal(nid);
mynid=mynid.setScale(0, BigDecimal.ROUND_HALF_UP);
BigDecimal mypid=new BigDecimal(pid);
mypid=mypid.setScale(0, BigDecimal.ROUND_HALF_UP);
Object[] attributes = { "ASDF", mynid, "Developer", mypid,
"rwretw" };
STRUCT Rel = new STRUCT(structdesc, con, attributes);
stmt.setObject(8, Rel);
stmt.execute();
stmt.close();
And the STRUCT is
public RelSeq(String nucl, java.math.BigDecimal neId, String nuor, java.math.BigDecimal pId, String phor) throws SQLException
{ _init_struct(true);
setNucl(nucl);
setNeId(neId);
setNuor(nuor);
setPId(pId);
setPhor(phor);
} -
ABAP , JAVA And XSLT Mapping Doc's
Hi,
I am new to SAP XI Any body please send me the Doc's Related to ABAP, JAVA And XSLT Mappings. Thanks in Advance.
Regards
Kiran.BHi
Refer to
ABAP mapping:
How to Use ABAP Mapping in XI 3.0
JAVA mapping:
http://help.sap.com/saphelp_nw04/helpdata/en/bd/c91241c738f423e10000000a155106/frameset.htm (Java mapping)
XSLT mapping:
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/01a57f0b-0501-0010-3ca9-d2ea3bb983c1
/people/prasadbabu.nemalikanti3/blog/2006/03/30/xpath-functions-in-xslt-mapping
/people/sreekanth.babu2/blog/2005/01/05/design-time-value-mappings-in-xslt
/people/anish.abraham2/blog/2005/12/22/file-to-multiple-idocs-xslt-mapping
XSLT Mapping with java enhancement
/people/pooja.pandey/blog/2005/06/27/xslt-mapping-with-java-enhancement-for-beginners
XSLT - /people/dirk.roeckmann/blog/2006/07/26/grouping-xml-with-xslt--from-muenchian-method-to-xslt-20
Regards,
Kumar.
Reward points if helpful!! -
BI Java and BI ABAP -RSPLAN issue
Hi All
We are working with BI system ,using BI 7.0 Java and BI ABAP as separate systems on same host.
Already run the template intaller for BI Java and ABAP integration.
But facing some issue ,when going ot BI ABAP and RSPLAN and clicking the Start Mideller
it is opening a browser as http://host:8000/sap/public/myssocntl?sap-client-XXX
Since this is not correct and it should open BI Java portal instead of ABAP stack page.
Instead this should open a Url like this http://host:5XX00/webdynpro/dispatcher/sap.com/biplanworkbench1/Modeler?
I check on BI ABAP system under SAP Reference IMG -> SAP Customizing Implementation Guide-> SAP NetWeaver _> Business Intelligence-> BI Integrated Planning -> Settings for Starting the Planning Modeler.
There the default Url is BEx Portal Server and the url is
http://host:5XX00/webdynpro/dispatcher/sap.com/biplanworkbench1/Modeler
Can anybody let me know why this is going to ABAP server instead it should go to Java.
Regards
Ajay
Edited by: Ajay Sandal on Mar 10, 2009 2:31 PMHi Ajay ..
Good news that ur issue is resolved ..
I have somewhat similar issue .. Hopu u can put some light ..
I have Bi 7.o with Add on java ,
In RSPLAN from ABAP system , modular page is not coming . if i click on start moduler button in RSPLAN ..portal page is coming up and i have to give logging details .
Please suggest .
Thanks -
How to get return value from java and read by other application?
i want to read return value from java and the other application read it.
for example:
public class test_return {
test_return(){
public int check(){
return 1;
public static void main(String args[]){
new test_return().check();
}from that class i make as jar file. How to read the return value (1) by other application?
thx..If your installer is requiring some process it invokes to return a particular value on failure, then the installer is seriously broken. There are a bazillion commands your installer could invoke, and any of them could fail, which in turn could invalidate the entire install process, and any of them could return any value on failure. The only value that's consistent (in my experience) is that zero means success and non-zero means failure, with specific non-zero values being different in different programs.
About the only control you have over the JVM's exit code is that if your main method completes without throwing an exception, the JVM will have an exit code of 0, and if main throws an exception (either explicitly or by not catching one thrown from below), it will be non-zero. I'm not even sure if that's guaranteed, but I would guess that's the case.
EDIT: I'm kind of full of crap here. If you're writing the Java code, you can call System.exit(whatever). But nonetheless, if your installer requires certain exit codes from any app--java or otherwise--you have a problem.
Edited by: jverd on Oct 29, 2009 1:27 AM -
Problem with java and flex web service
Hi,
I have a basic web service written in java using jax ws 2.1
ri. I need to call it from Flex using the WebService class
Annotations for the java web method :
@WebMethod
public void Login(
@WebParam(name="server") String serverURL,
@WebParam(name=AUTHENTICATE_HEADER,header=true,mode=WebParam.Mode.INOUTHolder<Authenticate Header>
authHeader)
When I try and call the service from Flex , it can't find the
login method and attempts to call it fail. If I set the web service
to RPC based using @SOAPBinding , the method is found but then
there are issues with the authentication header.
What do I need to do to get flex web services communicating
succesfully with java ?
Are there are any known compatibility issues ? Or guidelines
for going about this ?
Any help would be appreciatedwell Shay,
i've used JDev's tools to developer and to deploy the web service: the war and ear files are automatically generates you to the end of the process.
I have included all the files java and the compiled classes, but I do not have files jar.
But don't works: if i create only one java class with all code inside then it works fine!!
Daniele -
Hi,
In running the following simple code, I have gotten different results using java and javaw.
public class Test {
public Test() {
public static void main(String[] args) {
int x =4;
System.out.println("The value is "+ ((x > 5)?6.0:4));
System.out.println("The value is "+ ((false)?6.0:4));
System.out.println("The value is "+ ((true)?99:9.9));
Using java, I get the following results:
The value is 4.0
The value is 4.0
The value is 99.0
But using javaw, I get the following results:
The value is 4.0
The value is 4
The value is 99
Any ideas why this is so?
Thanks for any help.
GilbertI used JBuilder to run the following code and Jbuilder uses javaw.
By the way, the correct answer is the one using java right? -
Problem with Java and Zip Files
Hello there everyone. I have a problem with trying to zip up directories with empty folders in them. They zip fine with my code, but according to winzip, the number of files in the archive is incorrect. It's supposed to have a total of 288 files in it, but when it's zipped up, it only says 284. I mention specifically the "empty directories" note because the zipping works fine without empty folders.
Below is the code for the zip method:
public static void zip(File[] list, File zipfile, File zipRoot)
throws IOException {
if (!zipfile.exists()) {
zipfile.createNewFile();
else if (!zipfile.isFile()) {
throw new IOException("The zip file, " + zipfile.getAbsolutePath()
+ " is not a file.");
if (list.length == 0) {
LOG.error("The list of files to zip up is empty.");
for (int i = 0; i < list.length; i++) {
if (!list.exists()) {
throw new IOException("The file or directory, " + list[i].getAbsolutePath()
+ " does not exist.");
FileOutputStream fos = new FileOutputStream(zipfile);
ZipOutputStream zos = new ZipOutputStream(fos);
for (int i = 0; i < list.length; i++) {
if (LOG.isDebugEnabled())
LOG.debug(i + ": " + list[i].getName());
String entryName = getRelativeName(list[i], zipRoot);
if (list[i].isDirectory()){
if (list[i].listFiles().length == 0){
ZipEntry entry = new ZipEntry(entryName + "/");
zos.putNextEntry(entry);
else {
ZipEntry ze = new ZipEntry(entryName);
zos.putNextEntry(ze);
byte[] buffer = new byte[8096];
FileInputStream fis = new FileInputStream(list[i]);
int read = 0;
read = fis.read(buffer);
if (LOG.isDebugEnabled())
LOG.debug("\tFound " + read + " bytes.");
if (read == -1){
//empty file, but add it for preservation.
//zos.write(buffer,0,0);
while (read != -1) {
zos.write(buffer, 0, read);
read = fis.read(buffer);
fis.close();
zos.closeEntry();
zos.close();
The files look like they're there, but I need the system to be able to determine the number correctly.
Here's the interesting thing: It zips the files, and then when I use the size() method for zip files in java, it says 284 files. But when I unzip, it says 288 again. It's like there's files missing when compressed, but when decompressed, they return. Note that the files are actually there. If I open the archive in a third party app such as Winzip AND Winrar AND IZarc, they all show 288 files. Any idea what would make the number of files appear incorrectly in a zip file when zipped by java with the code above? Thanks in advance.
- ChrisI figured out the problem. When zipping files in windows using winzip, it doesn't explicitly count folders as a "file/folder" as a file in itself. It will create the folders for files to go in, but the folder itself will not be 'counted' when you query the info of the file itself. You have more control of the zip file in java, and can count the folder as a file or not.
-
Problem with java and pogo games
i use mozilla and now with the problems with java and hackers cannot play my pogo games,what can i do? i disabled my java i tried java 6 doesnt work or is not safe,what is a safe way to play games on pogo that use java?
Oracle has released a Java 7 Update 11 to address security vulnerabilities and you should update to that version.
*https://support.mozilla.org/kb/how-to-use-java-if-its-been-blocked
See also:
*http://kb.mozillazine.org/Java#Windows_installation_issues
You can find the latest Java version on the Oracle website.
See Java Platform > Java SE 7U11 and Java 6U38 (Download JRE)
*http://www.oracle.com/technetwork/java/javase/downloads/index.html -
Compability problem with Java and Python RSA algorithm implementation
I have client server application. Server is writtein in python, client in java. Client receives messages from server encrypted with RSA (http://stuvel.eu/rsa), and I'm unable to decrypt it. It seems that this is RSA algorithm compatibility problem. I'm using algorithm from java.security package, instatinating Cipher object like this: c = Cipher.getInstance("RSA"); . I noticed that this algorithm produces for input blocks of lengtrh <=117 ouput block of length 128. Server I guess uses the most triviall impelentation of RSA ( (1 byte is encrypted to 1 byte) So i want to make my java algorithm compatibile with this one which server uses. How to do that ? Do i have to instatinate Cipher object in different way ? Or use another library ?
azedor wrote:
First you said it was no good because it could only handle <= 117 byte inputs, now you say it is no good because it produces a 128-byte output. You're not making sense.First i said that this two RSA implementations are not compatibile, and first reason i noticed firstly is that Python imlementation for input of length N produces cryptogram of the same length. Not true. In general, the RSA encryption of any number of bytes less than the length of the modulus will produce a result of length near that of the modulus. When N is less than the length of the modulus, it is rare that N bytes of cleartext produces N bytes of ciphertext.
Java implementation for data block of length <=117 produces alwasy 128 bytes of output.Pretty much correct and very much desirable. This is primarily a function of the PKCS1 padding which is used to solve two basic problems. First, as I alluded to in my first response, it is the nature of the algorithm that leading zeros are not preserved and second when the cleartext is very small (a few bytes) the exponentiation does not roll over and it is easy to decrypt the result. Both these problems are addressed by PKCS1 padding.
>
>
After what sabre150 said i think of giving up idea of translating Python code to Java and considering to use another assymetric cryptography algorithms on both sides. Can you recommend me sth what should be compatibile with Python ?This seems to be at odds with your statement in reply #3 "Also have acces only to client code so i have to change sth in java." ! This statement is why I said "I suspect ... you have dug a deep hole".
In your position I would use the Python bindings for openssl. Once more, Google is your friend. -
Events problem with (Java and ActiveX)
Hi,
I use an ActiveX component with Java and i've got a problem with events.
Java classes were generated with Bridge2Java (IBM).
In order to manage events I added a listener in my application :
javaMyActiveX = new MyActiveX();
javaMyActiveX.add_DMyActiveXEventsListener(new _DMyActiveXEventsAdapter());
I also added a constructor in the _DMyActiveXEventsAdapter class and I fill the body of methods.
The ActiveX generates two types of events :
- The ones are directly generated by methods.
- The others are generated by a thread.
With MS Products (VB, Visual C++, Visual J++), I catch all events.
With java (jdk 1.4), I catch only events generated by methods.
Can anyone help me.I'm not 100% sure, but the last time I used that bridge, it only worked if you ran your Java app within a Microsoft VM.
-
I was just watching / streaming TV off Safari on my actual TV.
I'm using a Mini-Display Port to HDMI cable for the connection to the external display.
Software update popped-up and said there was an update for Java and for SMC.
I ran the update and upon the computer restarting, my external display (my TV) is no longer working. It is now flickering.
It won't work in Mirroring or set up as an extended display.
I've reset SMC / PRAM / Safe Mode / Even restored from a Time Machine backup (From before the updates were done).
What could it be?!I keep saying this over and over, in the hope that people who do a search will find it. Apple cannot possibly test for or be reponsible for the bazillion combinations of adapter, cables, and TV's out there. The only monitors that are 100% guaranteed to work with the MacBook Pro are the Cinema Displays and Thunderbolt Displays, because, they're made by Apple. They're expensive, but they work perfectly.
My guess is that you bought a cheap MDP to HDMI cable, or have a defective one. From my reading of these boards over the past few months, cheap cables have a high failure rate. And the regular priced ones have only a slightly less of one. Try a new one. Make sure you do not damage the Thunderbolt port.
Maybe you are looking for
-
Deploying war file in weblogic SIP server 2.2
Hi, I trying to deploy a "sar" file in weblogic SIP server,but it is not allowing me to do that.So one of my collegue told me to change the "sar" to "war" and try to deploy. When i am trying to deploy that it is saying that unable to find deployment
-
i just restarted my mac then suddenly when it boots,disk utility came and says different option like repair disk, get help, reinstall OSX and I tried to click disk repair but it says that I am um able to repair the disk
-
Dear All Prepared Purchase Order with Docuement Date : 31.03.2010 (Service Purchase Order) Prepared Service Etry Dt. 03.04.2010 For some reason , deleted Service Entry and also deleted Item (item no. 10) from Purchase Order. Added New item in Same Pu
-
Best way to store user-saved searches/forms
Hello, in our project, we want to give to our users ability to save form fields values for later use. It will be named the fast OR saved searches. We have a relatively huge number of search forms, each one with specific fields. So I don't want, if po
-
This might be a simple question to some of you but I am still trying to understand all the benefits of generics. Compile-time type safety is clearly one benefit. Is it the only one ? I see posts referring to generic IOC containers etc. So it seems th