OPMN address binding
I've a Windows XP machine with SOASuite 10.1.3.1 installed and I'm having trouble getting JDeveloper 10.1.3.2 on a different machine to make an App Server connection to it.
By using telnet to try opening connections manually to the appropriate port, I've determined that the problem is that I have a loopback adapter installed on the app server machine, and OPMN is bound to the loopback- hence will only accept connections on the local machine that are directed to an address that resolves to the loopback interface.
I've searched on here but found little- though did see a comment that recent SOASuites listened on all interfaces. Netstat confirms that, although I think the most recent one available, my installation is only listening on 127.0.0.1 and 10.100.1.1, the loopback,
The loopback is there because this machine has an address that's assigned by DHCP- although in most cases it is deliberately assigned the same address and this should really only be an issue when I happen to be using the VM on a different network.
How can I get OPMN to listen on the additional interface?
Try associating the hostname from the loopback adapter with the exteral IP address by updating %windir%\system32\drivers\etc\hosts.
Similar Messages
-
Ipv4 mapped addresses bind problem: address already in use.
Hello. It's me again with another, may be newbie, question.
This time I observe different behavior binding different type of ip addresses on tcp sockets. For instance
- when I bind ipv4 mapped addresses, if there is a remaining old socket in TIME_WAIT state from a previous run
I get the error 'Address already in use', event with SO_REUSEADDR set.
- when I bind another type of ipv6 or just ipv4 addresses. if there if a remaining old socket in TIME_WAIT state from
a previous run, the bind is successful (SO_REUSEADDR is set).
How can be explained this behavior?
Thanks a lot.
Details
=======
I made a small program to test this. This program:
- dump the addresses to be used in bind() and connect()
- creates a LISTEN SOCKET calling
- socket(AF_INET6, SOCK_STREAM, 0)
- fcntl(F_SETFD, fcntl(F_GETFD) | FD_CLOEXEC)
- fcntl(F_SETFL, fcntl(F_GETFL) | O_NONBLOCK),
- setsockopt(SO_REUSEADDR),
- setsockopt(SO_KEEPALIVE),
- setsockopt(TCP_NODELAY),
- bind()
- listen()
- creates a CONNECTING SOCKET calling
- socket(AF_INET6, SOCK_STREAM, 0)
- fcntl(F_SETFD, fcntl(F_GETFD) | FD_CLOEXEC)
- fcntl(F_SETFL, fcntl(F_GETFL) | O_NONBLOCK),
- setsockopt(SO_REUSEADDR),
- setsockopt(SO_KEEPALIVE),
- setsockopt(TCP_NODELAY),
- connect()
- creates a ACCEPTED SOCKET calling
- accept()
- fcntl(F_SETFD, fcntl(F_GETFD) | FD_CLOEXEC)
- fcntl(F_SETFL, fcntl(F_GETFL) | O_NONBLOCK),
- setsockopt(SO_REUSEADDR),
- setsockopt(SO_KEEPALIVE),
- setsockopt(TCP_NODELAY),
- issue a std::system( "netstat -an | grep 10329" )
- wait with select() for a write event in the CONNECTING SOCKET
- wait with select() for a write event in the ACCEPTED SOCKET
- close the accepted socket
- close the connecting socket
- close the listen socket
- issue another std::system( "netstat -an | grep 10329" )
- exit(0)
Note: please don't get confused with my notation of addresses, the last component, after the last colon, is the port.
I run it with ipv4 mapped listen address, with this result:
$ ./test_reuseaddr listen_address=0.0.0.0:10329 connect_address=127.0.0.1:10329
Listener in *'::ffff:0.0.0.0:10329'*
1a 00 28 59 00 00 00 00 00 00 00 00 00 00 00 00 |..(Y............|
00 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 |................|
Connect to '::ffff:127.0.0.1:10329'
1a 00 28 59 00 00 00 00 00 00 00 00 00 00 00 00 |..(Y............|
00 00 ff ff 7f 00 00 01 00 00 00 00 00 00 00 00 |................|
Creating listen socket
Creating connecting socket
Creating accepted socket
netstat -an | grep 10329
*.10329 *.* 0 0 49152 0 LISTEN
127.0.0.1.35114 127.0.0.1.10329 49152 0 49152 0 ESTABLISHED
127.0.0.1.10329 127.0.0.1.35114 49152 0 49152 0 ESTABLISHED
Closing connecting socket
Closing accepted socket
Closing listen socket
netstat -an | grep 10329
*127.0.0.1.10329 127.0.0.1.35114 49152 0 49152 0 TIME_WAIT*
Immediately run it again the same way, with this result (Address already in use):
$ ./test_reuseaddr listen_address=0.0.0.0:10329 connect_address=127.0.0.1:10329
Listener in *'::ffff:0.0.0.0:10329'*
1a 00 28 59 00 00 00 00 00 00 00 00 00 00 00 00 |..(Y............|
00 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 |................|
Connect to '::ffff:127.0.0.1:10329'
1a 00 28 59 00 00 00 00 00 00 00 00 00 00 00 00 |..(Y............|
00 00 ff ff 7f 00 00 01 00 00 00 00 00 00 00 00 |................|
Creating listen socket
*### SYSCALL ERROR: bind(): 125, Address already in use*
Wait and verify that the TIME_WAIT socket has disappeared
$ sleep 120
$ netstat -an | grep 10329
Now run the same program with normal ipv6 listen addresses
$ ./test_reuseaddr listen_address=*::0*:10329 connect_address=127.0.0.1:10329
Listener in *':::10329'*
1a 00 28 59 00 00 00 00 00 00 00 00 00 00 00 00 |..(Y............|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
Connect to '::ffff:127.0.0.1:10329'
1a 00 28 59 00 00 00 00 00 00 00 00 00 00 00 00 |..(Y............|
00 00 ff ff 7f 00 00 01 00 00 00 00 00 00 00 00 |................|
Creating listen socket
Creating connecting socket
Creating accepted socket
netstat -an | grep 10329
*.10329 *.* 0 0 49152 0 LISTEN
127.0.0.1.35115 127.0.0.1.10329 49152 0 49152 0 ESTABLISHED
127.0.0.1.10329 127.0.0.1.35115 49152 0 49152 0 ESTABLISHED
*.10329 *.* 0 0 49152 0 LISTEN
Closing connecting socket
Closing accepted socket
Closing listen socket
netstat -an | grep 10329
*127.0.0.1.10329 127.0.0.1.35115 49152 0 49152 0 TIME_WAIT*
Immediately run it again the same way (no error this time)
$ ./test_reuseaddr listen_address=*::0*:10329 connect_address=127.0.0.1:10329
Listener in *':::10329'*
1a 00 28 59 00 00 00 00 00 00 00 00 00 00 00 00 |..(Y............|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
Connect to '::ffff:127.0.0.1:10329'
1a 00 28 59 00 00 00 00 00 00 00 00 00 00 00 00 |..(Y............|
00 00 ff ff 7f 00 00 01 00 00 00 00 00 00 00 00 |................|
Creating listen socket
Creating connecting socket
Creating accepted socket
netstat -an | grep 10329
127.0.0.1.10329 127.0.0.1.35115 49152 0 49152 0 TIME_WAIT
*.10329 *.* 0 0 49152 0 LISTEN
127.0.0.1.35116 127.0.0.1.10329 49152 0 49152 0 ESTABLISHED
127.0.0.1.10329 127.0.0.1.35116 49152 0 49152 0 ESTABLISHED
*.10329 *.* 0 0 49152 0 LISTEN
Closing connecting socket
Closing accepted socket
Closing listen socket
netstat -an | grep 10329
*127.0.0.1.10329 127.0.0.1.35115 49152 0 49152 0 TIME_WAIT*
*127.0.0.1.10329 127.0.0.1.35116 49152 0 49152 0 TIME_WAIT*
Run it againg many times with no error.sunlover1984 wrote:
Sorry, to use such short forms in forums as i dont know much about this. i rarly use java forum. well, i removed the code that i gave u for server starting. but still it is giving me the same error. this time i put it in a java bean file.(Hint "u" is just another short form).
Did you try the suggestion to put a log statement just before you start the server? Or put a breakpoint at that line and see how often it is reached.
Because the only reason for this problem is that something is already listening at that port.
And if there's really nothing listening before you start you application, then only your application itself can listen there already, so the logical conclusion for me would be that you're starting the Server twice. -
Static Address, Binding, and related matters
I seem to have stumped the ISP and Applecare on something that should be pretty simple. Here's the story. I have run my modem fine for four years. It works fine using DHCP from the ISP. I am in the process of getting the static IP set for the new XServe (which is running loud and fine). Connected to Port 1, gave ISP the MAC address took the static, subnet, and DNS info they gave me. They used the term "gateway" and gave me an address for that. Me and Apple Care guy can't quite figure that one out. He believes router field on the Xserve Manual Ethernet set up should be the address of the modem as fed to us by DHCP. We don't know what gateway IP address refers to. it's a 24.124.x.x number, as is my static IP.
Yet while it will hook up to the internet with a DHCP supplied IP it won't on it's static.
When we get it all set up, we try to ping the modem at the address it supposedly supplied to the "router" field but it fails. As I'm sure many of you have experienced -- the ISP guys aren't real swift on the whole mac thing. So I am looking for smart things to suggest to them.
Anyone help?
Wait til I get to my DNS questions....oh gee.Hey there Wes-
Default router=default gateway.
Just for your information and for what it is worth my isp gave me a new modem when I transferred over to the static ip. They actually said that my old modem would not support a fixed ip address.
Has anyone from the isp showed up with a laptop and verified that your modem is supplying a fixed ip to your X? That is important. I am not thinking that you should still be able to get a dynamic ip address through a static modem but I may be wrong.
The modem does not supply any address to the router field.
So here is my point and it may or may not be relevant to your case-with the modem plugged into the real world ethernet as supplied by isp and nothing else attached, the modem itself should answer the ping to the fixed ip address. Somebody uploaded a configuraion file at some point to tell it that it was ok to seek within a certain range of ip addresses for you a workable dynamic ip, otherwise it would,ve selected from any one of bajillions and maybe not theirs. Likewise, modems responding to a static ip address must be configured to do so.
-DaddyPaycheck -
Hi Guys!
I'm using Oracle9ias 9.0.3. When I execute
$opmnctl startall, I get the next error in all instances (<instance>.default_island.1):
java.net.BindException: Address already in use
at java.net.PlainSocketImpl.socketBind(Native Method)
I have 3 instances, each one with different port rmi, configured in opmn.xml.
I used -Drmi.debug=true -Drmi.verbose=true in java-options and I got in the log:
RMIServer.DEBUG: using OPMN, address is ZERO_ADDRESS, use local address instead
RMIServer.DEBUG: creating RMIServer ServerSocket for address: antares.txp/127.0.0.1 port: 3114
RMIServer.DEBUG: Launching RMIServer thread
RMIServer.DEBUG: creating RMIServer ServerSocket for local address: antares.txp/127.0.0.1 port: 3114
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:447)
at java.net.ServerSocket.<init>
Any idea??
Thanks!
Carlos GuerraTry to use netstat -an to see if there is anything listening on this port (you should see "LISTEN" on far right on line). There is no process id or whatever, you just know there is a server socket open - might be a different program, might be a running instance incorrectly shuted down...
On the left there is a local address, on right there is a remote address (might be a connection from the same host, of course)
If there is nothing running before starting server, there is probably a port mismatch in your settings (i. e. rmi port for next started instance is the same as jms or http port of prevous one... I don't know about all of the ports settings.
Sometimes, especially on Windows there is a situation when server socket is not correctly closed and you have to restart Windows itself.
Myrra -
Getting bug error while compiling object binding code in javaFX
I am new to javaFX and exploring it from just last two days.
today i tried a simple binding object example and got weird exception about bug.
i created a simple file with name Calculator.fx having just one line public var result=1;and used object binding in another file Customer.fx with following code
var myStreet=21;
var address= bind Calculator{
result:myStreet;
println({address.result});i got following output error
init:
deps-jar:
Note: An internal error has occurred in the OpenJFX compiler. Please file a bug at the
Openjfx-compiler issues home (https://openjfx-compiler.dev.java.net/Issues)
after checking for duplicates. Include in your report:
- the following diagnostics
- file C:\Users\omnidoc\AppData\Local\Temp\javafx_err_59993.txt
- and if possible, the source file which triggered this problem.
Thank you.
C:\cc_storage\Caculator\src\Customer.fx:3: cannot find symbol
symbol : variable VOFF$result
location: class Calculator
def address= bind Calculator{
1 error
ERROR: javafxc execution failed, exit code: 1
C:\cc_storage\Caculator\nbproject\build-impl.xml:143: exec returned: -1
BUILD FAILED (total time: 2 seconds)Am i doing something wrong or is it really a bug.
Also can anyone tell me how to do object binding in javaFX.
thanks
chauhanchauhan2003 wrote:
Am i doing something wrong or is it really a bug.When you get such error, that's both: you made a mistake (and at least you get a generally helpful message about it) but the compiler is bugging out and crashing... -
DataGrid binding with comumns of column ItemSource
<DataGrid Grid.Column="1" Name="grid2" DataContext="{Binding SelectedPage}"
ItemsSource="{Binding Params}"
AutoGenerateColumns="False" Grid.RowSpan="2">
<DataGrid.Columns>
<DataGridComboBoxColumn ItemsSource="{Binding Source={StaticResource xKeySource}}"
DisplayMemberPath="Name"
SelectedValuePath="Name"
SelectedValueBinding="{Binding Name}"/>
<DataGridTextColumn Header="ParamName" Binding="{Binding Name}"/>
<DataGridTextColumn Header="Address" Binding="{Binding Address}"/>
<DataGridTextColumn Header="Format" Binding="{Binding Format}"/>
<DataGridTextColumn Header="Description" Binding="{Binding Description}"/>
</DataGrid.Columns>
</DataGrid>
Is it possible when I select from my ComboBoxColumn, compile automatically other columns in my DataGrid ?
The name of fileds in ItemSource are the same of name of another binding columns (are two different list but the property name is equal).
thanksI don't follow what you mean
compile automatically other columns in my DataGrid
If you mean change the content of other fields in the same row then yes.
If there is a viewmodel per row you could act in the setter of the property of that which the combo is bound to. Set those properties in the viewmodel and if it implements inotifypropertychanged then they would change in the view.
In your markup
<DataGridComboBoxColumn ItemsSource="{Binding Source={StaticResource xKeySource}}"
DisplayMemberPath="Name"
SelectedValuePath="Name"
SelectedValueBinding="{Binding Name}"/>
<DataGridTextColumn Header="ParamName" Binding="{Binding Name}"/>
These are both bound to the same property though.
You combo is in the datacontext the row is in.
That Name property is the same as the Name property the other column would be in.
Select combo > Name
Enter in ParamName > Name
Both the same property.
Making it a property of something else would be very strange - which row is pointing at what.
Hope that helps.
Technet articles: Uneventful MVVM;
All my Technet Articles -
Bind in form works with cfinput, how to with cfselect and a href
Hi all
This code workks binding a cfinput in an HTML cfform:
Name:<cfinput type="text" name="FIRSTNAME" label="Name" required="yes" width="150" bind="{UsersGrid.FIRSTNAME}" >
However this href doesn't seem to bind correctly:
<a href="http://www.google.com/search?hl=en&output=search&sclient=psy-ab&q={UsersGrid.COMPANY}&btnK=" bind="{UsersGrid.COMPANY}">Google.com</a>
This cfselect doesn't either:
Department: <cfselect name="DEPARTMENT1" width="100" size="1" label="Department" required="yes" bind="UsersGrid.DEPARTMENT1">
<option></option><cfoutput query="dNames"><option value="#DEPARTMENTIDS#">#DEPARTMENTNOM#</option></cfoutput>
</cfselect>
How can I make them both work? Thank youSure, Aaaron here it is, it uses the same database tables and datasource as in the other thread:
<cfquery name="QNAMES" datasource="tester">
select * from company, industries, division
where company.SECTORS1 = industries.SECTORSIDS
<cfif structKeyExists(url,"sectorid")>
and industries.SECTORSIDS = #url.sectorid#</cfif>
and division.DEPARTMENTIDS = company.DEPARTMENT1
and company.WHEN = 2
ORDER BY company</cfquery>
<cfquery name="dNames" datasource="tester">
select DEPARTMENTIDS, DEPARTMENTNOM
from division
order by DEPARTMENTNOM</cfquery>
<CFQUERY name="industries" datasource="tester">
SELECT * FROM industries
</CFQUERY>
<CFQUERY name="salesstep" datasource="tester">
SELECT * FROM sales
</CFQUERY>
<CFQUERY name="xity" datasource="tester">
SELECT * FROM ciudad
</CFQUERY>
<CFQUERY name="hols" datasource="tester">
SELECT * FROM holidays
</CFQUERY>
<!--- UPDATE QUERY --->
<cfif isDefined("FORM.UPDATEADDBTN")>
<cfif FORM.ENTID GTE 1>
<cfset isCOMPANYNull = iif(len(trim(FORM.COMPANY)) EQ 0, true, false)>
<cfset isSECTORS1Null = iif(len(trim(FORM.SECTORS1)) EQ 0, true, false)>
<cfset isRANKINGNull = iif(len(trim(FORM.RANKING)) EQ 0, true, false)>
<cfset isPRICENull = iif(len(trim(FORM.PRICE)) EQ 0, true, false)>
<cfset isDEPARTMENT1Null = iif(len(trim(FORM.DEPARTMENT1)) EQ 0, true, false)>
<cfset isFIRSTNAMENull = iif(len(trim(FORM.FIRSTNAME)) EQ 0, true, false)>
<cfset isPOSNull = iif(len(trim(FORM.POS)) EQ 0, true, false)>
<cfset isPHONENull = iif(len(trim(FORM.PHONE)) EQ 0, true, false)>
<cfset isEMAILNull = iif(len(trim(FORM.EMAIL)) EQ 0, true, false)>
<cfset isMOBILENull = iif(len(trim(FORM.MOBILE)) EQ 0, true, false)>
<cfset isADDRESSNull = iif(len(trim(FORM.ADDRESS)) EQ 0, true, false)>
<cfset isCITYNull = iif(len(trim(FORM.CITY)) EQ 0, true, false)>
<cfset isCOMMENTSNull = iif(len(trim(FORM.COMMENTS)) EQ 0, true, false)>
<cfset MEETINGDATE = trim(FORM.ABUNDANCE)>
<!--- DATECFM--->
<cfset isMTGTNull = iif(len(trim(FORM.MTGT)) EQ 0, true, false)>
<cfset isSTATE1Null = iif(len(trim(FORM.STATE1)) EQ 0, true, false)>
<CFQUERY name="updatecompany" datasource="tester">
update COMPANY
SET COMPANY = <cfqueryparam cfsqltype="cf_sql_longvarchar" value="#trim(FORM.COMPANY)#" null="#isCOMPANYNull#" />,
SECTORS1 = <cfqueryparam cfsqltype="cf_sql_integer" value="#trim(FORM.SECTORS1)#" null="#isSECTORS1Null#" />,
RANKING = <cfqueryparam cfsqltype="cf_sql_integer" value="#trim(FORM.RANKING)#" null="#isRANKINGNull#" />,
PRICE = <cfqueryparam cfsqltype="cf_sql_integer" value="#trim(FORM.PRICE)#" null="#isPRICENull#" />,
DEPARTMENT1 = <cfqueryparam cfsqltype="cf_sql_integer" value="#trim(FORM.DEPARTMENT1)#" null="#isDEPARTMENT1Null#" />,
FIRSTNAME = <cfqueryparam cfsqltype="cf_sql_longvarchar" value="#trim(FORM.FIRSTNAME)#" null="#isFIRSTNAMENull#" />,
POS = <cfqueryparam cfsqltype="cf_sql_longvarchar" value="#trim(FORM.POS)#" null="#isPOSNull#" />,
PHONE = <cfqueryparam cfsqltype="cf_sql_longvarchar" value="#trim(FORM.PHONE)#" null="#isPHONENull#" />,
EMAIL = <cfqueryparam cfsqltype="cf_sql_longvarchar" value="#trim(FORM.EMAIL)#" null="#isEMAILNull#" />,
MOBILE= <cfqueryparam cfsqltype="cf_sql_longvarchar" value="#trim(FORM.MOBILE)#" null="#isMOBILENull#" />,
ADDRESS = <cfqueryparam cfsqltype="cf_sql_longvarchar" value="#trim(FORM.ADDRESS)#" null="#isADDRESSNull#" />,
CITY = <cfqueryparam cfsqltype="cf_sql_integer" value="#trim(FORM.CITY)#" null="#isCITYNull#" />,
COMMENTS = <cfqueryparam cfsqltype="cf_sql_longvarchar" value="#trim(FORM.COMMENTS)#" null="#isCOMMENTSNull#" />,
ABUNDANCE = <cfqueryparam cfsqltype="cf_sql_timestamp" value="#MEETINGDATE#" />,
MTGT = <cfqueryparam cfsqltype="cf_sql_longvarchar" value="#trim(FORM.MTGT)#" null="#isMTGTNull#" />,
STATE1 = <cfqueryparam cfsqltype="cf_sql_integer" value="#trim(FORM.STATE1)#" null="#isSTATE1Null#" />
WHERE ENTID = #FORM.ENTID#
</CFQUERY>
<CFLOCATION URL="testht.cfm?begin=1">
<cfelse>
<cfset isCOMPANYNull = iif(len(trim(FORM.COMPANY)) EQ 0, true, false)>
<cfset isSECTORS1Null = iif(len(trim(FORM.SECTORS1)) EQ 0, true, false)>
<cfset isRANKINGNull = iif(len(trim(FORM.RANKING)) EQ 0, true, false)>
<cfset isPRICENull = iif(len(trim(FORM.PRICE)) EQ 0, true, false)>
<cfset isDEPARTMENT1Null = iif(len(trim(FORM.DEPARTMENT1)) EQ 0, true, false)>
<cfset isFIRSTNAMENull = iif(len(trim(FORM.FIRSTNAME)) EQ 0, true, false)>
<cfset isPOSNull = iif(len(trim(FORM.POS)) EQ 0, true, false)>
<cfset isPHONENull = iif(len(trim(FORM.PHONE)) EQ 0, true, false)>
<cfset isEMAILNull = iif(len(trim(FORM.EMAIL)) EQ 0, true, false)>
<cfset isMOBILENull = iif(len(trim(FORM.MOBILE)) EQ 0, true, false)>
<cfset isADDRESSNull = iif(len(trim(FORM.ADDRESS)) EQ 0, true, false)>
<cfset isCITYNull = iif(len(trim(FORM.CITY)) EQ 0, true, false)>
<cfset isCOMMENTSNull = iif(len(trim(FORM.COMMENTS)) EQ 0, true, false)>
<cfset isMTGTNull = iif(len(trim(FORM.MTGT)) EQ 0, true, false)>
<cfset isSTATE1Null = iif(len(trim(FORM.STATE1)) EQ 0, true, false)>
<cfset MEETINGDATE = trim(FORM.ABUNDANCE)>
<!--- DATECFM --->
<!--- ADD COMPANY QUERY --->
<CFQUERY name="addcompany" datasource="tester">
INSERT INTO COMPANY(
COMPANY,
SECTORS1,
RANKING,
PRICE,
DEPARTMENT1,
FIRSTNAME,
POS,
PHONE,
EMAIL,
MOBILE,
ADDRESS,
CITY,
COMMENTS,
ABUNDANCE,
MTGT,
STATE1
VALUES (
<cfqueryparam cfsqltype="cf_sql_longvarchar" value="#trim(FORM.COMPANY)#" null="#isCOMPANYNull#" />,
<cfqueryparam cfsqltype="cf_sql_integer" value="#trim(FORM.SECTORS1)#" null="#isSECTORS1Null#" />,
<cfqueryparam cfsqltype="cf_sql_integer" value="#trim(FORM.RANKING)#" null="#isRANKINGNull#" />,
<cfqueryparam cfsqltype="cf_sql_integer" value="#trim(FORM.PRICE)#" null="#isPRICENull#" />,
<cfqueryparam cfsqltype="cf_sql_integer" value="#trim(FORM.DEPARTMENT1)#" null="#isDEPARTMENT1Null#" />,
<cfqueryparam cfsqltype="cf_sql_longvarchar" value="#trim(FORM.FIRSTNAME)#" null="#isFIRSTNAMENull#" />,
<cfqueryparam cfsqltype="cf_sql_longvarchar" value="#trim(FORM.POS)#" null="#isPOSNull#" />,
<cfqueryparam cfsqltype="cf_sql_longvarchar" value="#trim(FORM.PHONE)#" null="#isPHONENull#" />,
<cfqueryparam cfsqltype="cf_sql_longvarchar" value="#trim(FORM.EMAIL)#" null="#isEMAILNull#" />,
<cfqueryparam cfsqltype="cf_sql_longvarchar" value="#trim(FORM.MOBILE)#" null="#isMOBILENull#" />,
<cfqueryparam cfsqltype="cf_sql_longvarchar" value="#trim(FORM.ADDRESS)#" null="#isADDRESSNull#" />,
<cfqueryparam cfsqltype="cf_sql_integer" value="#trim(FORM.CITY)#" null="#isCITYNull#" />,
<cfqueryparam cfsqltype="cf_sql_longvarchar" value="#trim(FORM.COMMENTS)#" null="#isCOMMENTSNull#" />,
<cfqueryparam cfsqltype="cf_sql_timestamp" value="#MEETINGDATE#" />,
<cfqueryparam cfsqltype="cf_sql_longvarchar" value="#trim(FORM.MTGT)#" null="#isMTGTNull#" />,
<cfqueryparam cfsqltype="cf_sql_integer" value="#trim(FORM.STATE1)#" null="#isSTATE1Null#" />
</CFQUERY>
<!---DATE_FORMAT(datetime_field_name,'%Y-%m-%d');--->
<CFLOCATION URL="testht.cfm?begin=1">
</cfif>
</cfif>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sales</title>
<link rel="stylesheet" href="style.css" type="text/css" media="screen" />
<link rel="stylesheet" href="formst.css" type="text/css" media="screen" />
</head>
<cfdump var=#qnames#>
<cfajaxproxy bind="javascript:myHandler({UsersGrid.COMPANY},{UsersGrid.SECTORS1},{UsersGrid.DEPARTMENT 1})"/>
<script type="text/javascript">
function myHandler(COMPANY,SECTORS1,DEPARTMENT1) {
//update the link's href
document.getElementById('myLink').href = 'http://www.google.com/search?q=' + COMPANY;
document.getElementById('Linkedin').href = 'http://www.google.com/search?q=linkedin' + COMPANY;
//update SECTORS1's selected
var theField = document.getElementById('SECTORS1');
for(var i=0; i<theField.options.length; i++) {
if(theField.options[i].value==SECTORS1) {
theField.options[i].selected = true;
} else {
theField.options[i].selected = false;
</script>
<!--- TOP --->
<body>
<div>
<cfform name="SFORM" FORMAT="html" width="1000" height="400" style="margin-left:140px;">
<cfgrid name="UsersGrid"
FORMAT="html"
query="QNAMES" width="920" height="200" rowheaders="No" striperows="yes" striperowcolor="fefefe">
<cfgridcolumn name="RANKING" width="40"header="Rank">
<cfgridcolumn name="COMPANY" width="170" header="Company">
<cfgridcolumn name="FIRSTNAME" header="Contact Name">
<cfgridcolumn name="POS" width="160" header="Position">
<cfgridcolumn name="DEPARTMENTNOM" width="150" header="Department">
<cfgridcolumn name="SECTORSNOM" width="120" header="Sectors">
<cfgridcolumn name="ABUNDANCE" width="120" header="Action date">
<cfgridcolumn name="SECTORS1" width="120" header="Action date" display="no">
<cfgridcolumn name="PRICE" width="120" header="Action date" display="no">
<cfgridcolumn name="PHONE" width="120" header="Action date" display="no">
<cfgridcolumn name="EMAIL" width="120" header="Action date" display="no">
<cfgridcolumn name="MOBILE" width="120" header="Action date" display="no">
<cfgridcolumn name="ADDRESS" width="120" header="Action date" display="no">
<cfgridcolumn name="CITY" width="120" header="Action date" display="no">
<cfgridcolumn name="COMMENTS" width="120" header="Action date" display="no">
<cfgridcolumn name="MTGT" width="120" header="Action date" display="no">
</cfgrid>
<!---FIRST--->
<table width="880" class="stat" >
<tr><td><cfoutput>#QNAMES.RecordCount# Companies</cfoutput></td></tr>
<tr>
<td>Company:<cfinput class="input" type="text" name="COMPANY" size="20" label="Company" required="yes" bind="{UsersGrid.COMPANY}" ></td>
<td>
Sector:<cfselect class="input" name="SECTORS1" size="1" label="Sector" required="yes">
<option></option><cfoutput query="industries"><option value="#SECTORSIDS#">#SECTORSNOM#</option></cfoutput></cfselect>
</td>
<td>Ranking:<cfinput class="input" type="TEXT" name="RANKING" size="3" label="Ranking" bind="{UsersGrid.RANKING}" ></td>
<td>Price:<cfinput class="input" type="TEXT" name="PRICE" size="3" label="Price" bind="{UsersGrid.PRICE}" >
<a href="" id="myLink" target="_blank">Google</a>
<a href="" id="Linkedin" target="_blank">Linkedin</a></td>
</tr>
<tr>
<td>Department:<cfselect class="input" name="DEPARTMENT1" size="1" label="Department" required="yes">
<option></option><cfoutput query="dNames"><option value="#DEPARTMENTIDS#">#DEPARTMENTNOM#</option></cfoutput></cfselect>
</td>
<td>Name:<cfinput class="input" type="text" name="FIRSTNAME" label="Name" required="yes" width="150" bind="{UsersGrid.FIRSTNAME}" ></td>
<td>Position:<cfinput class="input" type="text" name="POS" label="Position" width="150" bind="{UsersGrid.POS}" ></td>
<td>Phone:<cfinput class="input" type="text" name="PHONE" label="Phone" width="150" bind="{UsersGrid.PHONE}" ></td>
</tr>
<!--- THIRD--->
<tr><td>Email:<cfinput class="input" type="text" name="EMAIL" label="Email" width="150" bind="{UsersGrid.EMAIL}" ></td>
<td>Mobile:<cfinput class="input" type="text" name="MOBILE" label="Mobile" bind="{UsersGrid.MOBILE}" ></td>
<td>Address:<cfinput class="input" type="text" name="ADDRESS" label="Address" bind="{UsersGrid.ADDRESS}" ></td>
<td><cfselect class="input" name="CITY" width="80" size="1" >
<cfoutput query="xity"><option value="#CITYID#">#CITYNOM#</option></cfoutput>
</cfselect></td>
</tr>
<!--- FOURTH --->
<tr><td>Comments:<cftextarea class="input" name="COMMENTS" height="60" label="Comments" bind="{UsersGrid.COMMENTS}" /> </td>
<td>Action:<cfinput type="DateField" class="input" size="10" name="ABUNDANCE" label="Action" bind="{UsersGrid.ABUNDANCE}" ></td>
<td>Time:<cfselect class="input" name="MTGT" width="90" label="Time"><option>7:00AM</option></cfselect></td>
<td><cfselect class="input" name="STATE1" size="1" label="Action" >
<cfoutput query="salesstep"><option value="#SALESID#">#SALESNOM#</option></cfoutput>
</cfselect> </td>
<cfinput type="hidden" name="ENTID" label="ENTID" bind="{UsersGrid.ENTID}" >
</tr>
<tr> <td>
<cfinput type="submit" name="DELCOM" value="delete" class="button" >
<cfinput type="submit" name="UPDATEADDBTN" value="UPDATE or ADD NEW" class="button"></td>
</tr>
</table>
</cfform>
<cfif isDefined("FORM.DELCOM")>
<CFQUERY name="deletecompany" datasource="tester">
DELETE FROM COMPANY
WHERE ENTID = #FORM.ENTID#
</CFQUERY>
<CFLOCATION URL="testht.cfm">
</cfif>
</div>
</body>
</html> -
Hi all,
I'm working with XML but creating a binding between the
xmlconnector, the dataset and the the datagrid with the usage of
actionscript only (No dragging of components 2 the stage,
components are in the libary, that's not the problem) isn't working
at all. The results of the current code return nothing, however,
binding the XMLconnector to a textarea works fine. The problem lies
within the binding with dataset and datagrid! PLZ HELP ME Here is
some code:I think something like:
Name="Child" DataContext="{Binding ElementName=someotherelement, Path=SelectedItem}"
And then use xpath on that again.
xpath is very powerful.
I can't say I use it so much since I do line of business apps and they're very database orientated. Usually.
Hope that helps.
Technet articles: Uneventful MVVM;
All my Technet Articles
Excuse me, are not yet practical with XPATH.
How come it takes me all the PARAM and not just those of the selected PAGE?
Where am I wrong?
<DataGrid Name="grid1" Grid.Row="0" DataContext="{StaticResource ConfigData}"
ItemsSource="{Binding XPath=//Page}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn
Header="pageName"
Binding="{Binding XPath=@pageName}"/>
<DataGridTextColumn
Header="description"
Binding="{Binding XPath=description}"/>
</DataGrid.Columns>
</DataGrid >
<DataGrid Grid.Row="1" DataContext="{Binding ElementName=grid1, Path=SelectedItem}"
ItemsSource="{Binding XPath=//Param}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn
Header="name"
Binding="{Binding XPath=name}"/>
<DataGridTextColumn
Header="address"
Binding="{Binding XPath=address}"/>
</DataGrid.Columns>
</DataGrid> -
Getting a "Could not find a base address that matches scheme net.tcp"
I've written several WCF services which use HTTP (and its variants). Now I'm trying to learn how to write a WCF service which will use TCP. I'm using Andrew Troelsen's book, "Pro C# 2008 and the .NET 3.5 Platform" as a guide (chapter 25). I've asked questions related to this before on a much more complicated WCF service, so I decided to write a simple WCF service to learn how to do it, rather than work on my more complicated WCF service. Coincidentally I chose the same routine as Troelsen did in his book, although in my case I called the WCF service SimpleAdd.
Anyway, after writing the WCF service, I then wrote the Windows Service to host it. I then installed it, and the installation went fine. When I tried to run the service, the service started but then immediately stopped. I checked the event log and found the following message in it:
"Service cannot be started. System.InvalidOperationException: Could not find a base address that matches scheme net.tcp for the endpoint with binding MetadataExchangeTcpBinding. Registered base address schemes are [http]."
Here's the interface code for my SimpleAdd:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace SimpleAdd
// NOTE: If you change the interface name "IService" here, you must also update the reference to "IService" in App.config.
[ServiceContract]
public interface IService
[OperationContract]
int Add(int FirstNumber, int SecondNumber);
Here's the code for the implementation (I'm leaving out the using statements):
namespace SimpleAdd
// NOTE: If you change the class name "Service" here, you must also update the reference to "Service" in App.config.
public class Service : IService
#region IService Members
int IService.Add(int FirstNumber, int SecondNumber)
return (FirstNumber + SecondNumber);
#endregion
And here's the App.Config file for the service:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<compilation debug="true" />
</system.web>
<!-- When deploying the service library project, the content of the config file must be added to the host's
app.config file. System.Configuration does not support config files for libraries. -->
<system.serviceModel>
<services>
<service behaviorConfiguration="SimpleAdd.ServiceBehavior" name="SimpleAdd.Service">
<clear />
<endpoint binding="wsHttpBinding" contract="SimpleAdd.IService"
listenUriMode="Explicit">
<identity>
<dns value="localhost" />
<certificateReference storeName="My" storeLocation="LocalMachine"
x509FindType="FindBySubjectDistinguishedName" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"
listenUriMode="Explicit">
<identity>
<!--
<certificateReference storeName="My" storeLocation="LocalMachine"
x509FindType="FindBySubjectDistinguishedName" />
-->
</identity>
</endpoint>
<endpoint address="net.tcp://localhost/SimpleAdd/" binding="netTcpBinding"
bindingConfiguration="" contract="SimpleAdd.IService" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8731/Design_Time_Addresses/SimpleAdd/Service/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="SimpleAdd.ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
I don't think it will matter much, because I believe the problem probably lies in the App.config file for the Windows service, but just in case, here's the code for the AddWinService (without the using statements):
namespace WindowsAddService
public partial class AddWinService : ServiceBase
//A member variable of type ServiceHost. (I'm using the "Pro C# 2008" book as reference for this.)
private ServiceHost myHost;
public AddWinService()
InitializeComponent();
protected override void OnStart(string[] args)
//just to be really safe
if (myHost != null)
myHost.Close();
myHost = null;
//create the host
myHost = new ServiceHost(typeof(SimpleAdd.Service)); //I've included the class from SimpleAdd, which isn't in the book!!!
//open the host
myHost.Open();
protected override void OnStop()
//shut down the host
if (myHost != null)
myHost.Close();
And lastly, here is the App.Config file from my AddWinService:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<client>
<endpoint address="net.tcp://localhost/SimpleAdd"
binding="netTcpBinding"
contract="SimpleAdd.IService"
name="netTcpBinding_IService" />
</client>
<services>
<service name="SimpleAdd.Service"
behaviorConfiguration="SimpleAddMEXBehavior">
<!-- Enable the MEX endpoint -->
<endpoint address="mex"
binding="mexTcpBinding"
contract="IMetadataExchange" />
<host>
<!-- Need to add this so MEX knows the address of our service. -->
<baseAddresses>
<add baseAddress="http://localhost:8731/Design_Time_Addresses/SimpleAdd/Service/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="SimpleAddMEXBehavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
So, where have I gone wrong?
RodHello Richard,
Well, I've tried making the change to the MEX point for net.tcp, but now when I try to start the service I get the following error in the event log:
Service cannot be started. System.InvalidOperationException: Service 'SimpleAdd.Service' has zero application (non-infrastructure) endpoints. This might be because no configuration file was found for your application, or because no service element matching the service name could be found in the configuration file, or because no endpoints were defined in the service element.
I am sure the problem lies with what I've put into the app.config file. My app.config file now looks like this:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<client>
<endpoint address=""
binding="netTcpBinding"
contract="SimpleAdd.IService"
name="netTcpBinding_IService" />
</client>
<services>
<service name="SimpleAdd.Service"
behaviorConfiguration="SimpleAddMEXBehavior">
<!-- Enable the MEX endpoint -->
<endpoint address="mex"
binding="mexTcpBinding"
contract="IMetadataExchange" />
<host>
<!-- Need to add this so MEX knows the address of our service. -->
<baseAddresses>
<add baseAddress="net.tcp://localhost/SimpleAdd" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="SimpleAddMEXBehavior">
<serviceMetadata httpGetEnabled="false" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
I've also tried using this for the <client> tag under <system.serviceModel>:
<client>
<endpoint address="net.tcp://localhost/SimpleAdd"
binding="netTcpBinding"
contract="SimpleAdd.IService"
name="netTcpBinding_IService" />
</client>
But that gives me the same error in the event log.
So, what have I done wrong now?
Rod -
Hello!
I am having problem in configuring wlc 5508, in a security option i applied mac-filtering and it works fine.
Now I need to configure ip-mac address binding, i tried both with gui and cli method but it is not working. While configuring mac-filtering on gui there is a option to define ip address, after defining xx.xx.xx.xx ip address for device xx it is not peaking particular ip from the pool.
mac-filtering is still working with out issue.
Also tried with cli.....
Looking through the configuration guide i tried every possible ways but couldn't get any resolution.
mac-binding, mac-filtering is enable,
What will be the possible causes of this?
does it support mac-ip binding in its local database?
I would be thankful in your any suggestions and advises!
NikhilThanks for reply David,
Currently user are authenticate from mac address and we want IP-MAC base authentication in cisco 5508 controller.
we are facing some problem that in stead of ip-mac pair only mac address is authenticate.
can u guide me that how can i authenticate IP-MAC pair in cisco 5508 controller?
or Is this possible on Cisco 5508 controller as it is showing ip address field in GUI option?
i am waiting your reply. -
Binding Issues / Binding Numbers
Hi,
I have created an order form which has:
BILL TO
CONTACT
SHIP TO
sections, but I cannot get each to have
the same binding number.
example: BILL TO:
Name = Binding 1 Address = Binding 1 Telephone = Binding 0 Email Address = Binding 2
Fax = Binding 0 etc.
I have tried Script Editor and the Binding Number Box, but neither allows me to change the number.
Also, I have searched the XML without luck, and have had trouble finding information in the help
and through web searches.
Any help would be greatly appreciated.
Best, ajosThat number is an occurance number of that particular field. In your case yo uhave two fields called OrderByCompany and you are looking at the second one. If you change the fields name the number will go to 0 (which is what you want). You can also look at the hierarchy view and see the field names.
Paul -
Importing MAC addresses from wireless controller.
Hi,
We are doing a migration from an old SSID to a new one where the IP address and other security parameters will change.
In the current dot1x authentication we have more than 5000 MAC addresses binding to the old SSID interface. Is there a way to export them from the controller and map it to the new SSID or do I have to delete them and them to the new SSID at one shot ? Is there any other better way to plan the migration ?HUZEFA-786,
If you are talking about a MAC filtering database, then you can do a show run-config commands on the controller CLI and copy out the section pertaining to your MAC addresses. Paste into a text file, global search and replace the WLAN ID, then copy and paste back into your controller.
You can also manage MAC addresses via the WCS or NCS using a spreadsheet import.
An additional thought--managing thousands of MAC addresses directly on your WLC seems somewhat messy. MAC authentication at this scale is IMO better handled from a RADIUS server so you're not consuming WLC CPU resources to sort through a huge list every time a client wants to associate.
Justin -
Hi ,
I want to add the conext information to my server.xml of tomcat for my hibernate configuration.....
the conext information is as follows ....
<Context path="/quickstart" docBase="quickstart">
<Resource name="jdbc/quickstart" scope="Shareable" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/quickstart">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<!-- DBCP database connection settings -->
<parameter>
<name>url</name>
<value>jdbc:postgresql://localhost/quickstart</value>
</parameter>
<parameter>
<name>driverClassName</name><value>org.postgresql.Driver</value>
</parameter>
<parameter>
<name>username</name>
<value>quickstart</value>
</parameter>
<parameter>
<name>password</name>
<value>secret</value>
</parameter>
<!-- DBCP connection pooling options -->
<parameter>
<name>maxWait</name>
<value>3000</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>100</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>10</value>
</parameter>
</ResourceParams>
</Context>
Where in my server.xml should i put
the server.xml looks like this :
<!-- Example Server Configuration File -->
<!-- Note that component elements are nested corresponding to their
parent-child relationships with each other -->
<!-- A "Server" is a singleton element that represents the entire JVM,
which may contain one or more "Service" instances. The Server
listens for a shutdown command on the indicated port.
Note: A "Server" is not itself a "Container", so you may not
define subcomponents such as "Valves" or "Loggers" at this level.
-->
<Server port="8005" shutdown="SHUTDOWN">
<!-- Comment these entries out to disable JMX MBeans support used for the
administration web application -->
<Listener className="org.apache.catalina.core.AprLifecycleListener" />
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
<!-- Global JNDI resources -->
<GlobalNamingResources>
<!-- Test entry for demonstration purposes -->
<Environment name="simpleValue" type="java.lang.Integer" value="30"/>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users -->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<!-- A "Service" is a collection of one or more "Connectors" that share
a single "Container" (and therefore the web applications visible
within that Container). Normally, that Container is an "Engine",
but this is not required.
Note: A "Service" is not itself a "Container", so you may not
define subcomponents such as "Valves" or "Loggers" at this level.
-->
<!-- Define the Tomcat Stand-Alone Service -->
<Service name="Catalina">
<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Each Connector passes requests on to the
associated "Container" (normally an Engine) for processing.
By default, a non-SSL HTTP/1.1 Connector is established on port 8080.
You can also enable an SSL HTTP/1.1 Connector on port 8443 by
following the instructions below and uncommenting the second Connector
entry. SSL support requires the following steps (see the SSL Config
HOWTO in the Tomcat 5 documentation bundle for more detailed
instructions):
* If your JDK version 1.3 or prior, download and install JSSE 1.0.2 or
later, and put the JAR files into "$JAVA_HOME/jre/lib/ext".
* Execute:
%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA (Windows)
$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA (Unix)
with a password value of "changeit" for both the certificate and
the keystore itself.
By default, DNS lookups are enabled when a web application calls
request.getRemoteHost(). This can have an adverse impact on
performance, so you can disable it by setting the
"enableLookups" attribute to "false". When DNS lookups are disabled,
request.getRemoteHost() will return the String version of the
IP address of the remote client.
-->
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector
port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
<!-- Note : To disable connection timeouts, set connectionTimeout value
to 0 -->
<!-- Note : To use gzip compression you could set the following properties :
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"
-->
<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
<!--
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
<!-- Define a Proxied HTTP/1.1 Connector on port 8082 -->
<!-- See proxy documentation for more information about using this. -->
<!--
<Connector port="8082"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" acceptCount="100" connectionTimeout="20000"
proxyPort="80" disableUploadTimeout="true" />
-->
<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
analyzes the HTTP headers included with the request, and passes them
on to the appropriate Host (virtual host). -->
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
-->
<!-- Define the top level container in our container hierarchy -->
<Engine name="Catalina" defaultHost="localhost">
<!-- The request dumper valve dumps useful debugging information about
the request headers and cookies that were received, and the response
headers and cookies that were sent, for all requests received by
this instance of Tomcat. If you care only about requests to a
particular virtual host, or a particular application, nest this
element inside the corresponding <Host> or <Context> entry instead.
For a similar mechanism that is portable to all Servlet 2.4
containers, check out the "RequestDumperFilter" Filter in the
example application (the source for this filter may be found in
"$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters").
Request dumping is disabled by default. Uncomment the following
element to enable it. -->
<!--
<Valve className="org.apache.catalina.valves.RequestDumperValve"/>
-->
<!-- Because this Realm is here, an instance will be shared globally -->
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<!-- Comment out the old realm but leave here for now in case we
need to go back quickly -->
<!--
<Realm className="org.apache.catalina.realm.MemoryRealm" />
-->
<!-- Replace the above Realm with one of the following to get a Realm
stored in a database and accessed via JDBC -->
<!--
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="org.gjt.mm.mysql.Driver"
connectionURL="jdbc:mysql://localhost/authority"
connectionName="test" connectionPassword="test"
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name" />
-->
<!--
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL"
connectionName="scott" connectionPassword="tiger"
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name" />
-->
<!--
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="sun.jdbc.odbc.JdbcOdbcDriver"
connectionURL="jdbc:odbc:CATALINA"
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name" />
-->
<!-- Define the default virtual host
Note: XML Schema validation will not work with Xerces 2.2.
-->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<!-- Defines a cluster for this node,
By defining this element, means that every manager will be changed.
So when running a cluster, only make sure that you have webapps in there
that need to be clustered and remove the other ones.
A cluster has the following parameters:
className = the fully qualified name of the cluster class
name = a descriptive name for your cluster, can be anything
mcastAddr = the multicast address, has to be the same for all the nodes
mcastPort = the multicast port, has to be the same for all the nodes
mcastBindAddr = bind the multicast socket to a specific address
mcastTTL = the multicast TTL if you want to limit your broadcast
mcastSoTimeout = the multicast readtimeout
mcastFrequency = the number of milliseconds in between sending a "I'm alive" heartbeat
mcastDropTime = the number a milliseconds before a node is considered "dead" if no heartbeat is received
tcpThreadCount = the number of threads to handle incoming replication requests, optimal would be the same amount of threads as nodes
tcpListenAddress = the listen address (bind address) for TCP cluster request on this host,
in case of multiple ethernet cards.
auto means that address becomes
InetAddress.getLocalHost().getHostAddress()
tcpListenPort = the tcp listen port
tcpSelectorTimeout = the timeout (ms) for the Selector.select() method in case the OS
has a wakup bug in java.nio. Set to 0 for no timeout
printToScreen = true means that managers will also print to std.out
expireSessionsOnShutdown = true means that
useDirtyFlag = true means that we only replicate a session after setAttribute,removeAttribute has been called.
false means to replicate the session after each request.
false means that replication would work for the following piece of code: (only for SimpleTcpReplicationManager)
<%
HashMap map = (HashMap)session.getAttribute("map");
map.put("key","value");
%>
replicationMode = can be either 'pooled', 'synchronous' or 'asynchronous'.
* Pooled means that the replication happens using several sockets in a synchronous way. Ie, the data gets replicated, then the request return. This is the same as the 'synchronous' setting except it uses a pool of sockets, hence it is multithreaded. This is the fastest and safest configuration. To use this, also increase the nr of tcp threads that you have dealing with replication.
* Synchronous means that the thread that executes the request, is also the
thread the replicates the data to the other nodes, and will not return until all
nodes have received the information.
* Asynchronous means that there is a specific 'sender' thread for each cluster node,
so the request thread will queue the replication request into a "smart" queue,
and then return to the client.
The "smart" queue is a queue where when a session is added to the queue, and the same session
already exists in the queue from a previous request, that session will be replaced
in the queue instead of replicating two requests. This almost never happens, unless there is a
large network delay.
-->
<!--
When configuring for clustering, you also add in a valve to catch all the requests
coming in, at the end of the request, the session may or may not be replicated.
A session is replicated if and only if all the conditions are met:
1. useDirtyFlag is true or setAttribute or removeAttribute has been called AND
2. a session exists (has been created)
3. the request is not trapped by the "filter" attribute
The filter attribute is to filter out requests that could not modify the session,
hence we don't replicate the session after the end of this request.
The filter is negative, ie, anything you put in the filter, you mean to filter out,
ie, no replication will be done on requests that match one of the filters.
The filter attribute is delimited by ;, so you can't escape out ; even if you wanted to.
filter=".*\.gif;.*\.js;" means that we will not replicate the session after requests with the URI
ending with .gif and .js are intercepted.
The deployer element can be used to deploy apps cluster wide.
Currently the deployment only deploys/undeploys to working members in the cluster
so no WARs are copied upons startup of a broken node.
The deployer watches a directory (watchDir) for WAR files when watchEnabled="true"
When a new war file is added the war gets deployed to the local instance,
and then deployed to the other instances in the cluster.
When a war file is deleted from the watchDir the war is undeployed locally
and cluster wide
-->
<!--
<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
managerClassName="org.apache.catalina.cluster.session.DeltaManager"
expireSessionsOnShutdown="false"
useDirtyFlag="true"
notifyListenersOnReplication="true">
<Membership
className="org.apache.catalina.cluster.mcast.McastService"
mcastAddr="228.0.0.4"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="auto"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
<Sender
className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
replicationMode="pooled"
ackTimeout="15000"/>
<Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/>
<Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
</Cluster>
-->
<!-- Normally, users must authenticate themselves to each web app
individually. Uncomment the following entry if you would like
a user to be authenticated the first time they encounter a
resource protected by a security constraint, and then have that
user identity maintained across all web applications contained
in this virtual host. -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all requests for this virtual host. By
default, log files are created in the "logs" directory relative to
$CATALINA_HOME. If you wish, you can specify a different
directory with the "directory" attribute. Specify either a relative
(to $CATALINA_HOME) or absolute path to the desired directory.
-->
<!--
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
-->
<!-- Access log processes all requests for this virtual host. By
default, log files are created in the "logs" directory relative to
$CATALINA_HOME. If you wish, you can specify a different
directory with the "directory" attribute. Specify either a relative
(to $CATALINA_HOME) or absolute path to the desired directory.
This access log implementation is optimized for maximum performance,
but is hardcoded to support only the "common" and "combined" patterns.
-->
<!--
<Valve className="org.apache.catalina.valves.FastCommonAccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
-->
</Host>
</Engine>
</Service>
</Server>
Can Some one Help me pleaseeeeeePlease don't cross-post in multiple forums. I have answered
this in your other thread. -
Problem with Configuring Tomcat for running jsp web applications..Plz HELP
I am using Tomcat 5.5 and Jdk 1.5.0_12 and Oracle 10g. I am using jdbc-odbc bridge connection
to connect to the database. I have placed my project folder called
tdm under the webapps folder in Tomcat. This 'tdm' folder consists of
a collection of html pages,jsp pages and images of my project. Also I created a
WEB-INF folderand in that I have lib folder which contains catalina-root.jar
, classes12.jar and nls_charset.jar files. And also in the WEB-INF folder I have the web.xml
file which looks like this
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
Copyright 2004 The Apache Software Foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<web-app>
<resource-ref>
<description>Oracle Datasource example</description>
<res-ref-name>jdbc/gdn</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
My Server.xml file in Tomcat\conf folder is as follows
<!-- Example Server Configuration File -->
<!-- Note that component elements are nested corresponding to their
parent-child relationships with each other -->
<!-- A "Server" is a singleton element that represents the entire JVM,
which may contain one or more "Service" instances. The Server
listens for a shutdown command on the indicated port.
Note: A "Server" is not itself a "Container", so you may not
define subcomponents such as "Valves" or "Loggers" at this level.
-->
<Server port="8005" shutdown="SHUTDOWN">
<!-- Comment these entries out to disable JMX MBeans support used for the
administration web application -->
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<!-- Global JNDI resources -->
<GlobalNamingResources>
<!-- Test entry for demonstration purposes -->
<Environment name="simpleValue" type="java.lang.Integer" value="30"/>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users -->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
<Resource name="jdbc/gdn" auth="Container"
type="javax.sql.DataSource" driverClassName="sun.jdbc.odbc.JdbcOdbcDriver"
url="jdbc:odbc:gdn"
username="system" password="tiger" maxActive="20" maxIdle="10"
maxWait="-1"/>
</GlobalNamingResources>
<!-- A "Service" is a collection of one or more "Connectors" that share
a single "Container" (and therefore the web applications visible
within that Container). Normally, that Container is an "Engine",
but this is not required.
Note: A "Service" is not itself a "Container", so you may not
define subcomponents such as "Valves" or "Loggers" at this level.
-->
<!-- Define the Tomcat Stand-Alone Service -->
<Service name="Catalina">
<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Each Connector passes requests on to the
associated "Container" (normally an Engine) for processing.
By default, a non-SSL HTTP/1.1 Connector is established on port 8080.
You can also enable an SSL HTTP/1.1 Connector on port 8443 by
following the instructions below and uncommenting the second Connector
entry. SSL support requires the following steps (see the SSL Config
HOWTO in the Tomcat 5 documentation bundle for more detailed
instructions):
* If your JDK version 1.3 or prior, download and install JSSE 1.0.2 or
later, and put the JAR files into "$JAVA_HOME/jre/lib/ext".
* Execute:
%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA (Windows)
$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA (Unix)
with a password value of "changeit" for both the certificate and
the keystore itself.
By default, DNS lookups are enabled when a web application calls
request.getRemoteHost(). This can have an adverse impact on
performance, so you can disable it by setting the
"enableLookups" attribute to "false". When DNS lookups are disabled,
request.getRemoteHost() will return the String version of the
IP address of the remote client.
-->
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector
port="5050" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
<!-- Note : To disable connection timeouts, set connectionTimeout value
to 0 -->
<!-- Note : To use gzip compression you could set the following properties :
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"
-->
<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
<!--
<Connector port="8443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
<!-- Define a Proxied HTTP/1.1 Connector on port 8082 -->
<!-- See proxy documentation for more information about using this. -->
<!--
<Connector port="8082"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" acceptCount="100" connectionTimeout="20000"
proxyPort="80" disableUploadTimeout="true" />
-->
<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
analyzes the HTTP headers included with the request, and passes them
on to the appropriate Host (virtual host). -->
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
-->
<!-- Define the top level container in our container hierarchy -->
<Engine name="Catalina" defaultHost="localhost">
<!-- The request dumper valve dumps useful debugging information about
the request headers and cookies that were received, and the response
headers and cookies that were sent, for all requests received by
this instance of Tomcat. If you care only about requests to a
particular virtual host, or a particular application, nest this
element inside the corresponding <Host> or <Context> entry instead.
For a similar mechanism that is portable to all Servlet 2.4
containers, check out the "RequestDumperFilter" Filter in the
example application (the source for this filter may be found in
"$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters").
Request dumping is disabled by default. Uncomment the following
element to enable it. -->
<!--
<Valve className="org.apache.catalina.valves.RequestDumperValve"/>
-->
<!-- Because this Realm is here, an instance will be shared globally -->
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<!-- Comment out the old realm but leave here for now in case we
need to go back quickly -->
<!--
<Realm className="org.apache.catalina.realm.MemoryRealm" />
-->
<!-- Replace the above Realm with one of the following to get a Realm
stored in a database and accessed via JDBC -->
<!--
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="org.gjt.mm.mysql.Driver"
connectionURL="jdbc:mysql://localhost/authority"
connectionName="test" connectionPassword="test"
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name" />
-->
<!--
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL"
connectionName="scott" connectionPassword="tiger"
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name" />
-->
<!--
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="sun.jdbc.odbc.JdbcOdbcDriver"
connectionURL="jdbc:odbc:CATALINA"
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name" />
-->
<!-- Define the default virtual host
Note: XML Schema validation will not work with Xerces 2.2.
-->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<!-- Defines a cluster for this node,
By defining this element, means that every manager will be changed.
So when running a cluster, only make sure that you have webapps in there
that need to be clustered and remove the other ones.
A cluster has the following parameters:
className = the fully qualified name of the cluster class
name = a descriptive name for your cluster, can be anything
mcastAddr = the multicast address, has to be the same for all the nodes
mcastPort = the multicast port, has to be the same for all the nodes
mcastBindAddr = bind the multicast socket to a specific address
mcastTTL = the multicast TTL if you want to limit your broadcast
mcastSoTimeout = the multicast readtimeout
mcastFrequency = the number of milliseconds in between sending a "I'm alive" heartbeat
mcastDropTime = the number a milliseconds before a node is considered "dead" if no heartbeat is received
tcpThreadCount = the number of threads to handle incoming replication requests, optimal would be the same amount of threads as nodes
tcpListenAddress = the listen address (bind address) for TCP cluster request on this host,
in case of multiple ethernet cards.
auto means that address becomes
InetAddress.getLocalHost().getHostAddress()
tcpListenPort = the tcp listen port
tcpSelectorTimeout = the timeout (ms) for the Selector.select() method in case the OS
has a wakup bug in java.nio. Set to 0 for no timeout
printToScreen = true means that managers will also print to std.out
expireSessionsOnShutdown = true means that
useDirtyFlag = true means that we only replicate a session after setAttribute,removeAttribute has been called.
false means to replicate the session after each request.
false means that replication would work for the following piece of code: (only for SimpleTcpReplicationManager)
<%
HashMap map = (HashMap)session.getAttribute("map");
map.put("key","value");
%>
replicationMode = can be either 'pooled', 'synchronous' or 'asynchronous'.
* Pooled means that the replication happens using several sockets in a synchronous way. Ie, the data gets replicated, then the request return. This is the same as the 'synchronous' setting except it uses a pool of sockets, hence it is multithreaded. This is the fastest and safest configuration. To use this, also increase the nr of tcp threads that you have dealing with replication.
* Synchronous means that the thread that executes the request, is also the
thread the replicates the data to the other nodes, and will not return until all
nodes have received the information.
* Asynchronous means that there is a specific 'sender' thread for each cluster node,
so the request thread will queue the replication request into a "smart" queue,
and then return to the client.
The "smart" queue is a queue where when a session is added to the queue, and the same session
already exists in the queue from a previous request, that session will be replaced
in the queue instead of replicating two requests. This almost never happens, unless there is a
large network delay.
-->
<!--
When configuring for clustering, you also add in a valve to catch all the requests
coming in, at the end of the request, the session may or may not be replicated.
A session is replicated if and only if all the conditions are met:
1. useDirtyFlag is true or setAttribute or removeAttribute has been called AND
2. a session exists (has been created)
3. the request is not trapped by the "filter" attribute
The filter attribute is to filter out requests that could not modify the session,
hence we don't replicate the session after the end of this request.
The filter is negative, ie, anything you put in the filter, you mean to filter out,
ie, no replication will be done on requests that match one of the filters.
The filter attribute is delimited by ;, so you can't escape out ; even if you wanted to.
filter=".*\.gif;.*\.js;" means that we will not replicate the session after requests with the URI
ending with .gif and .js are intercepted.
The deployer element can be used to deploy apps cluster wide.
Currently the deployment only deploys/undeploys to working members in the cluster
so no WARs are copied upons startup of a broken node.
The deployer watches a directory (watchDir) for WAR files when watchEnabled="true"
When a new war file is added the war gets deployed to the local instance,
and then deployed to the other instances in the cluster.
When a war file is deleted from the watchDir the war is undeployed locally
and cluster wide
-->
<!--
<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
managerClassName="org.apache.catalina.cluster.session.DeltaManager"
expireSessionsOnShutdown="false"
useDirtyFlag="true"
notifyListenersOnReplication="true">
<Membership
className="org.apache.catalina.cluster.mcast.McastService"
mcastAddr="228.0.0.4"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="auto"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
<Sender
className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
replicationMode="pooled"
ackTimeout="15000"/>
<Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/>
<Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
</Cluster>
-->
<!-- Normally, users must authenticate themselves to each web app
individually. Uncomment the following entry if you would like
a user to be authenticated the first time they encounter a
resource protected by a security constraint, and then have that
user identity maintained across all web applications contained
in this virtual host. -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all requests for this virtual host. By
default, log files are created in the "logs" directory relative to
$CATALINA_HOME. If you wish, you can specify a different
directory with the "directory" attribute. Specify either a relative
(to $CATALINA_HOME) or absolute path to the desired directory.
-->
<!--
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
-->
<!-- Access log processes all requests for this virtual host. By
default, log files are created in the "logs" directory relative to
$CATALINA_HOME. If you wish, you can specify a different
directory with the "directory" attribute. Specify either a relative
(to $CATALINA_HOME) or absolute path to the desired directory.
This access log implementation is optimized for maximum performance,
but is hardcoded to support only the "common" and "combined" patterns.
-->
<!--
<Valve className="org.apache.catalina.valves.FastCommonAccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
-->
<Context path="/tdm" docBase="tdm" debug="0" reloadable="true" />
</Host>
</Engine>
</Service>
</Server>
I have set the context path to /tdm in the server.xml file. Should this be placed in context.xml?
My first page in the project is called Homepage.html. To start my project I give http://localhost:5050/tdm/homepage.html
in a browser. Here I accept a username and password from the user and then do the validation in
a valid.jsp file, where I connect to the database and check and use jsp:forward to go to next pages
accordingly. However when I enter the username and password and click Go in the homepage, nothing is
displayed on the next page. The URL in the browser says valid.jsp but a blank screen appears.
WHY DOES IT HAPPEN SO? DOES IT MEAN THAT TOMCAT IS NOT RECOGNIZING JAVA IN MY SYSTEM OR IS IT A PROBLEM
WITH THE DATABASE CONNECTION OR SOMETHING ELSE? I FEEL THAT TOMCAT IS NOT EXECUTING JSP COMMANDS?
IS IT POSSIBLE?WHY WILL THIS HAPPEN?
I set the JAVA_HOME and CATALINA_HOME environment to the jdk and tomcat folders resp.
Is there any other thing that I need to set in classpath? Should I have my project as a
WAR file in the webapps of TOMCAT or just a folder i.e. directory structure will fine?I am using Tomcat 5.5 and Jdk 1.5.0_12 and Oracle 10g. I am using jdbc-odbc bridge connection
to connect to the database. I have placed my project folder called
tdm under the webapps folder in Tomcat. This 'tdm' folder consists of
a collection of html pages,jsp pages and images of my project. Also I created a
WEB-INF folderand in that I have lib folder which contains catalina-root.jar
, classes12.jar and nls_charset.jar files. And also in the WEB-INF folder I have the web.xml
file which looks like this
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
Copyright 2004 The Apache Software Foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<web-app>
<resource-ref>
<description>Oracle Datasource example</description>
<res-ref-name>jdbc/gdn</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
My Server.xml file in Tomcat\conf folder is as follows
<!-- Example Server Configuration File -->
<!-- Note that component elements are nested corresponding to their
parent-child relationships with each other -->
<!-- A "Server" is a singleton element that represents the entire JVM,
which may contain one or more "Service" instances. The Server
listens for a shutdown command on the indicated port.
Note: A "Server" is not itself a "Container", so you may not
define subcomponents such as "Valves" or "Loggers" at this level.
-->
<Server port="8005" shutdown="SHUTDOWN">
<!-- Comment these entries out to disable JMX MBeans support used for the
administration web application -->
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<!-- Global JNDI resources -->
<GlobalNamingResources>
<!-- Test entry for demonstration purposes -->
<Environment name="simpleValue" type="java.lang.Integer" value="30"/>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users -->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
<Resource name="jdbc/gdn" auth="Container"
type="javax.sql.DataSource" driverClassName="sun.jdbc.odbc.JdbcOdbcDriver"
url="jdbc:odbc:gdn"
username="system" password="tiger" maxActive="20" maxIdle="10"
maxWait="-1"/>
</GlobalNamingResources>
<!-- A "Service" is a collection of one or more "Connectors" that share
a single "Container" (and therefore the web applications visible
within that Container). Normally, that Container is an "Engine",
but this is not required.
Note: A "Service" is not itself a "Container", so you may not
define subcomponents such as "Valves" or "Loggers" at this level.
-->
<!-- Define the Tomcat Stand-Alone Service -->
<Service name="Catalina">
<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Each Connector passes requests on to the
associated "Container" (normally an Engine) for processing.
By default, a non-SSL HTTP/1.1 Connector is established on port 8080.
You can also enable an SSL HTTP/1.1 Connector on port 8443 by
following the instructions below and uncommenting the second Connector
entry. SSL support requires the following steps (see the SSL Config
HOWTO in the Tomcat 5 documentation bundle for more detailed
instructions):
* If your JDK version 1.3 or prior, download and install JSSE 1.0.2 or
later, and put the JAR files into "$JAVA_HOME/jre/lib/ext".
* Execute:
%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA (Windows)
$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA (Unix)
with a password value of "changeit" for both the certificate and
the keystore itself.
By default, DNS lookups are enabled when a web application calls
request.getRemoteHost(). This can have an adverse impact on
performance, so you can disable it by setting the
"enableLookups" attribute to "false". When DNS lookups are disabled,
request.getRemoteHost() will return the String version of the
IP address of the remote client.
-->
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector
port="5050" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
<!-- Note : To disable connection timeouts, set connectionTimeout value
to 0 -->
<!-- Note : To use gzip compression you could set the following properties :
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"
-->
<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
<!--
<Connector port="8443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
<!-- Define a Proxied HTTP/1.1 Connector on port 8082 -->
<!-- See proxy documentation for more information about using this. -->
<!--
<Connector port="8082"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" acceptCount="100" connectionTimeout="20000"
proxyPort="80" disableUploadTimeout="true" />
-->
<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
analyzes the HTTP headers included with the request, and passes them
on to the appropriate Host (virtual host). -->
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
-->
<!-- Define the top level container in our container hierarchy -->
<Engine name="Catalina" defaultHost="localhost">
<!-- The request dumper valve dumps useful debugging information about
the request headers and cookies that were received, and the response
headers and cookies that were sent, for all requests received by
this instance of Tomcat. If you care only about requests to a
particular virtual host, or a particular application, nest this
element inside the corresponding <Host> or <Context> entry instead.
For a similar mechanism that is portable to all Servlet 2.4
containers, check out the "RequestDumperFilter" Filter in the
example application (the source for this filter may be found in
"$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters").
Request dumping is disabled by default. Uncomment the following
element to enable it. -->
<!--
<Valve className="org.apache.catalina.valves.RequestDumperValve"/>
-->
<!-- Because this Realm is here, an instance will be shared globally -->
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<!-- Comment out the old realm but leave here for now in case we
need to go back quickly -->
<!--
<Realm className="org.apache.catalina.realm.MemoryRealm" />
-->
<!-- Replace the above Realm with one of the following to get a Realm
stored in a database and accessed via JDBC -->
<!--
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="org.gjt.mm.mysql.Driver"
connectionURL="jdbc:mysql://localhost/authority"
connectionName="test" connectionPassword="test"
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name" />
-->
<!--
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL"
connectionName="scott" connectionPassword="tiger"
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name" />
-->
<!--
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="sun.jdbc.odbc.JdbcOdbcDriver"
connectionURL="jdbc:odbc:CATALINA"
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name" />
-->
<!-- Define the default virtual host
Note: XML Schema validation will not work with Xerces 2.2.
-->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<!-- Defines a cluster for this node,
By defining this element, means that every manager will be changed.
So when running a cluster, only make sure that you have webapps in there
that need to be clustered and remove the other ones.
A cluster has the following parameters:
className = the fully qualified name of the cluster class
name = a descriptive name for your cluster, can be anything
mcastAddr = the multicast address, has to be the same for all the nodes
mcastPort = the multicast port, has to be the same for all the nodes
mcastBindAddr = bind the multicast socket to a specific address
mcastTTL = the multicast TTL if you want to limit your broadcast
mcastSoTimeout = the multicast readtimeout
mcastFrequency = the number of milliseconds in between sending a "I'm alive" heartbeat
mcastDropTime = the number a milliseconds before a node is considered "dead" if no heartbeat is received
tcpThreadCount = the number of threads to handle incoming replication requests, optimal would be the same amount of threads as nodes
tcpListenAddress = the listen address (bind address) for TCP cluster request on this host,
in case of multiple ethernet cards.
auto means that address becomes
InetAddress.getLocalHost().getHostAddress()
tcpListenPort = the tcp listen port
tcpSelectorTimeout = the timeout (ms) for the Selector.select() method in case the OS
has a wakup bug in java.nio. Set to 0 for no timeout
printToScreen = true means that managers will also print to std.out
expireSessionsOnShutdown = true means that
useDirtyFlag = true means that we only replicate a session after setAttribute,removeAttribute has been called.
false means to replicate the session after each request.
false means that replication would work for the following piece of code: (only for SimpleTcpReplicationManager)
<%
HashMap map = (HashMap)session.getAttribute("map");
map.put("key","value");
%>
replicationMode = can be either 'pooled', 'synchronous' or 'asynchronous'.
* Pooled means that the replication happens using several sockets in a synchronous way. Ie, the data gets replicated, then the request return. This is the same as the 'synchronous' setting except it uses a pool of sockets, hence it is multithreaded. This is the fastest and safest configuration. To use this, also increase the nr of tcp threads that you have dealing with replication.
* Synchronous means that the thread that executes the request, is also the
thread the replicates the data to the other nodes, and will not return until all
nodes have received the information.
* Asynchronous means that there is a specific 'sender' thread for each cluster node,
so the request thread will queue the replication request into a "smart" queue,
and then return to the client.
The "smart" queue is a queue where when a session is added to the queue, and the same session
already exists in the queue from a previous request, that session will be replaced
in the queue instead of replicating two requests. This almost never happens, unless there is a
large network delay.
-->
<!--
When configuring for clustering, you also add in a valve to catch all the requests
coming in, at the end of the request, the session may or may not be replicated.
A session is replicated if and only if all the conditions are met:
1. useDirtyFlag is true or setAttribute or removeAttribute has been called AND
2. a session exists (has been created)
3. the request is not trapped by the "filter" attribute
The filter attribute is to filter out requests that could not modify the session,
hence we don't replicate the session after the end of this request.
The filter is negative, ie, anything you put in the filter, you mean to filter out,
ie, no replication will be done on requests that match one of the filters.
The filter attribute is delimited by ;, so you can't escape out ; even if you wanted to.
filter=".*\.gif;.*\.js;" means that we will not replicate the session after requests with the URI
ending with .gif and .js are intercepted.
The deployer element can be used to deploy apps cluster wide.
Currently the deployment only deploys/undeploys to working members in the cluster
so no WARs are copied upons startup of a broken node.
The deployer watches a directory (watchDir) for WAR files when watchEnabled="true"
When a new war file is added the war gets deployed to the local instance,
and then deployed to the other instances in the cluster.
When a war file is deleted from the watchDir the war is undeployed locally
and cluster wide
-->
<!--
<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
managerClassName="org.apache.catalina.cluster.session.DeltaManager"
expireSessionsOnShutdown="false"
useDirtyFlag="true"
notifyListenersOnReplication="true">
<Membership
className="org.apache.catalina.cluster.mcast.McastService"
mcastAddr="228.0.0.4"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="auto"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
<Sender
className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
replicationMode="pooled"
ackTimeout="15000"/>
<Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/>
<Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
</Cluster>
-->
<!-- Normally, users must authenticate themselves to each web app
individually. Uncomment the following entry if you would like
a user to be authenticated the first time they encounter a
resource protected by a security constraint, and then have that
user identity maintained across all web applications contained
in this virtual host. -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all requests for this virtual host. By
default, log files are created in the "logs" directory relative to
$CATALINA_HOME. If you wish, you can specify a different
directory with the "directory" attribute. Specify either a relative
(to $CATALINA_HOME) or absolute path to the desired directory.
-->
<!--
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
-->
<!-- Access log processes all requests for this virtual host. By
default, log files are created in the "logs" directory relative to
$CATALINA_HOME. If you wish, you can specify a different
directory with the "directory" attribute. Specify either a relative
(to $CATALINA_HOME) or absolute path to the desired directory.
This access log implementation is optimized for maximum performance,
but is hardcoded to support only the "common" and "combined" patterns.
-->
<!--
<Valve className="org.apache.catalina.valves.FastCommonAccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
-->
<Context path="/tdm" docBase="tdm" debug="0" reloadable="true" />
</Host>
</Engine>
</Service>
</Server>
I have set the context path to /tdm in the server.xml file. Should this be placed in context.xml?
My first page in the project is called Homepage.html. To start my project I give http://localhost:5050/tdm/homepage.html
in a browser. Here I accept a username and password from the user and then do the validation in
a valid.jsp file, where I connect to the database and check and use jsp:forward to go to next pages
accordingly. However when I enter the username and password and click Go in the homepage, nothing is
displayed on the next page. The URL in the browser says valid.jsp but a blank screen appears.
WHY DOES IT HAPPEN SO? DOES IT MEAN THAT TOMCAT IS NOT RECOGNIZING JAVA IN MY SYSTEM OR IS IT A PROBLEM
WITH THE DATABASE CONNECTION OR SOMETHING ELSE? I FEEL THAT TOMCAT IS NOT EXECUTING JSP COMMANDS?
IS IT POSSIBLE?WHY WILL THIS HAPPEN?
I set the JAVA_HOME and CATALINA_HOME environment to the jdk and tomcat folders resp.
Is there any other thing that I need to set in classpath? Should I have my project as a
WAR file in the webapps of TOMCAT or just a folder i.e. directory structure will fine? -
Sharepoint 2010 on Windows 2012R2 and claims based authentication
Hello,
We have installed a sharepoint 2010 SP2 CU dec 2014 on a Windows 2012R2 server.
The installation went without problems.
However, we want to use claims based authentication on a certain web app pool.
Therefore some configuration on IIS is required.
The first issue we ran into, is the web application pool uses ASP.NET 2.0, which is the default settings.
However, using this ASP.NET Version 2.0 the feature "Providers" and ".net users" are invisible.
When changing the .net version to 4.0, the features comes back again.
I can fill in the connection strings without problem.
The providers feature however, gives me the following errors:
There is a duplicate .... sections defined.
When googling on this error, it seems that on .net 4.0 these sections are already globbally defined in the machine.config, So i removed these entries in the machine.config
These are the lines that are "double"
<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false"
allowDefinition="MachineToApplication"/>
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere"
/>
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"
/>
<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false"
allowDefinition="MachineToApplication" />
So after removing these lines, i can get into Providers feature in IIS.
but, when i click on "Add..." i get the following error:
Add Provider
There was an error while performing this operation.
Details:
This method cannot be called during the application's pre-start initialization phase.
OK
I spent to much time already to solve this issue and i hope that someone can give me some advice to address this issue.The STS web.config:<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<!-- Behavior List: -->
<behaviors>
<serviceBehaviors>
<behavior name="SecurityTokenServiceBehavior">
<!-- The serviceMetadata behavior allows one to enable metadata (endpoints, bindings, services) publishing.
This configuration enables publishing of such data over HTTP GET.
This does not include metadata about the STS itself such as Claim Types, Keys and other elements to establish a trust.
-->
<serviceMetadata httpGetEnabled="true" />
<!-- Default WCF throttling limits are too low -->
<serviceThrottling maxConcurrentCalls="65536" maxConcurrentSessions="65536" maxConcurrentInstances="65536" />
</behavior>
</serviceBehaviors>
</behaviors>
<!-- Service List: -->
<services>
<service name="Microsoft.IdentityModel.Protocols.WSTrust.WSTrustServiceContract" behaviorConfiguration="SecurityTokenServiceBehavior">
<!-- This is the HTTP endpoint that supports clients requesing tokens. This endpoint uses the default
standard ws2007HttpBinding which requires that clients authenticate using their Windows credentials. -->
<endpoint address="" binding="customBinding" bindingConfiguration="spStsBinding" contract="Microsoft.IdentityModel.Protocols.WSTrust.IWSTrust13SyncContract" />
<!-- This is the HTTP endpoint that supports clients requesting service tokens. -->
<endpoint name="ActAs" address="actas" binding="customBinding" bindingConfiguration="spStsActAsBinding" contract="Microsoft.IdentityModel.Protocols.WSTrust.IWSTrust13SyncContract" />
<!-- This is the HTTP endpoint that supports IMetadataExchange. -->
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
<service name="Microsoft.SharePoint.Administration.Claims.SPWindowsTokenCacheService">
<endpoint address="" binding="customBinding" bindingConfiguration="SPWindowsTokenCacheServiceHttpsBinding" contract="Microsoft.SharePoint.Administration.Claims.ISPWindowsTokenCacheServiceContract" />
</service>
</services>
<!-- Binding List: -->
<bindings>
<customBinding>
<binding name="spStsBinding">
<binaryMessageEncoding>
<readerQuotas maxStringContentLength="1048576" maxArrayLength="2097152" />
</binaryMessageEncoding>
<httpTransport maxReceivedMessageSize="2162688" authenticationScheme="Negotiate" useDefaultWebProxy="false" />
</binding>
<binding name="spStsActAsBinding">
<security authenticationMode="SspiNegotiatedOverTransport" allowInsecureTransport="true" defaultAlgorithmSuite="Basic256Sha256" messageSecurityVersion="WSSecurity11WSTrust13WSSecureConversation13WSSecurityPolicy12" />
<binaryMessageEncoding>
<readerQuotas maxStringContentLength="1048576" maxArrayLength="2097152" />
</binaryMessageEncoding>
<httpTransport maxReceivedMessageSize="2162688" authenticationScheme="Negotiate" useDefaultWebProxy="false" />
</binding>
<binding name="SPWindowsTokenCacheServiceHttpsBinding">
<security authenticationMode="IssuedTokenOverTransport" />
<textMessageEncoding>
<readerQuotas maxStringContentLength="1048576" maxArrayLength="2097152" />
</textMessageEncoding>
<httpsTransport maxReceivedMessageSize="2162688" authenticationScheme="Anonymous" useDefaultWebProxy="false" />
</binding>
</customBinding>
</bindings>
</system.serviceModel>
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="true" />
<windowsAuthentication enabled="true">
<providers>
<clear />
<add value="Negotiate" />
<add value="NTLM" />
</providers>
</windowsAuthentication>
</authentication>
</security>
<modules>
<add name="WindowsAuthenticationModule" />
</modules>
</system.webServer>
<system.net>
<connectionManagement>
<add address="*" maxconnection="10000" />
</connectionManagement>
</system.net>
<connectionStrings>
<add connectionString="Server=sqldb_qa_sharepoint2010;Database=SG_SHP_Claims_Authentication;Integrated Security=true" name="SHP_Claims_Authentication" />
</connectionStrings>
</configuration>
I have backupped the machine.config and restored it (the file i edited was in the following dir: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Machine.config)
Maybe you are looking for
-
How can i tell if my lost/stolen iPod is being used
My daughter has either lost or had stolen her ipod. how can we see if someone else may be using it?
-
Can we create a table field with more than 1200 char length
Hi, As per business requirement, need to create new table - and one of the field should contain 1200 char length. i found the sap data element but when i was activating it was throwing an error.. is there any alternative for this. Thanks in advanc
-
Stucked in Checking for Update - how to fix?
Hi. my iphone was jailbroken and I want to update to the latest version of IOS which is ios7. When trying to update, it as stucked in "Checking for Update". Please advise on how to fix this.
-
Maintaining separate GR/IR accounts for Trade and Intercompnay affiliates
Hello Gurus, Can you please tell me as how to maintain two separate GR/IR accounts one for the third party trade and the other for Inter company affiliates. I want all my Inter company transactions to be recorded against a separate GR/IR account. C
-
I came home today to find my Powermac G5 disconnected from the internet. My first reaction was to try another computer, which worked fine (note, it was on the same router however the computer I was using was wireless). I then went to another computer