I'm a bit confused. You seem to be describing the behavior of an IDLE_TIME limit configured in the user's profile. That will cause a session to be sniped after a specified period of inactivity. The EXPIRE_TIME parameter in the sqlnet.ora file, on the other hand, tells Oracle to send periodic pings to the client in order to verify that the client is still alive.
If I open up a connection and go off to lunch, an IDLE_TIME limit will cause my session to be terminated after 15 minutes of inactivity. An EXPIRE_TIME of 15 minutes will merely have Oracle send a packet to my client application to verify that the client has not failed. If the client is up, it will answer the ping, and my session will stay around indefinitely. EXPIRE_TIME only causes sessions to be killed if the client application fails to respond to the ping, implying that the client process has failed or that the client system has failed. IDLE_TIME will kill sessions that don't have activity for a period of time, but that generally doesn't work well with applications that maintain a connection pool, since the assumption there is that the connection pool will have a fair number of connections that are idle for periods of the day and since applications that use connection pools tend to react poorly to connections in the pool getting killed.
Justin