Assigning a password to PDF, using dynamic value from query
I have a report that bursts through bi publisher, and i would like to dynamically protect each pdf that is generated by using something that is unique to the report, like an office id from the query. I know how to set a static password from the template properties, and i understand how to use the api if i wanted to write my own routine to run the report, i just dont want to do that. i just want to dynamically set the password, while the job runs inside the bipublisher environment as a scheduled job. can this be done? are there ways to embed java api calls/code in the report and have it run inside bipublisher, instead of having to call a webservice?
You have to do the same way you do for static password,
instead of typing the password, you refer an element from xml or concat some elements and form a password.
{/fromROOT/password}
Similar Messages
-
Open password protected pdf using c
open password protected pdf using c#...
we will be providing a pdf path & also its password..
we need to open it in browser without it asking for password..
Can this be done.??Not unless your budget is in the many tens of thousands of dollars. In effect, no.
-
Using dynamic values in the IN clause
hey guys ,
is it possible to use dynamic values for comparing in the IN clause while writting query in views, in adf bc .Thanks to Jobinesh http://jobinesh.blogspot.com/2010/12/using-oraclejbodomainarray-with.html
Timo -
Can you use the value from a numeric indicator in a numeric control?
Hi!
I have to develop a code where I have to find the maximum value of a waveform and draw a line at 50% of the value. So I chose to find the amplitude of say 10 cycles of waveforms and found the maximum value out of the amplitudes.
But my real problem is, I have to use the maximum amplitude value that I get from the max. array VI and put it back in program to calculate the 50% value.
So is it possible to use the value from a numeric indicator and put it in a numeric control? Like in MATLAB or C, you give the variable a name and use it later to do any computations. Is it possible to do something similar in LabVIEW?
Solved!
Go to Solution.Hi!
Thank you very much for taking some time out. I have been trying to do this since 2 months and I am stuck right where I am.
The situation is, I have to calculate the amplitude of the irregular waveform for a few trials and then find the maximum amplitude out of the trials and display a line at whatever % of amplitude the user chooses. I tried using property nodes but I am getting Error 1055 for some unknown reason. Then I decided to draw the line using DC offset but it turns out it calculates the amplitude each time and so the line keeps dancing everytime. Now my challenge is to have the amplitude calculated for say, 20 loops and then calculate the max from that. I ran out of ideas so I am posting here. I am using LabVIEW version 8, and I'll upload a few of my attempts. I hope I am not troubling you'll much.
Attachments:
amplitude display.vi 217 KB
amplitude display 1.vi 148 KB
Using property node.vi 56 KB -
How to get formated value from query
i get value from query use the follow method
Object obj1 = dataAccess.getValue(i,j,DataMap.DATA_UNFORMATTED);
Object obj1 = dataAccess.getValue(i,j,DataMap.DATA_FORMATTED);
the first method retrun a value '1666.0',
the second method return a value null
but i want to get the value '1,666'.
who can tell me how can get the formated value?Ahu,
An implementation of DataAccess is not required to support all DataMap constants. For example, the OLAP-based Query object does not support DataMap.DATA_FORMATTED. To find out which DataMaps are supported for a particular implementation, you can call the DataDirector's getSupportedDataMap method.
If you have an Crosstab instance, there is a way to get the formatted cell value, based upon the formatting rules associated with the Crosstab. Get the GridViewFormatManager reference from the Crosstab, and call its formatDataValue method to return a String representation of the formatted data value.
Hope this helps,
djb -
How to get POF object's field value from query result
hi,all:
I want to get field value from the query result, my code is below
Set setResults = cache.entrySet(createFilter("homeAddress.state = 'MA'"));
for (Iterator iter = setResults.iterator(); iter.hasNext(); )
Contact c=(Contact)iter.next();
System.out.println ("firstame####=" + c.getFirstName());
* but I get error*
Exception in thread "main" java.lang.ClassCastException: com.tangosol.util.ConverterCollec
tions$ConverterEntrySet$ConverterEntry cannot be cast to com.oracle.handson.Contact
at com.oracle.handson.QueryExample.printResults(QueryExample.java:159)
at com.oracle.handson.QueryExample.query(QueryExample.java:86)
at com.oracle.handson.QueryExample.main(QueryExample.java:43)
who can tell me how to get POF object's field value from query resultHi,
If you look at the Java Doc for the entrySet method here http://download.oracle.com/docs/cd/E15357_01/coh.360/e15725/com/tangosol/util/QueryMap.html#entrySet_com_tangosol_util_Filter_ you will see that it returns a Set of Map.Entry instances so you need to do this...
Set setResults = cache.entrySet(createFilter("homeAddress.state = 'MA'"));
for (Iterator iter = setResults.iterator(); iter.hasNext(); )
Map.Entry entry = iter.next();
Contact c=(Contact)entry.getValue();
System.out.println ("firstame####=" + c.getFirstName());
}JK -
Password Protected PDF using iTextSharp
hello
i create pdf files using iTextSharp in vb.net .
i did it but now i need to create these pdf files as password protected and i can't find any method for this,
how can i create password protect a pdf using iTextSharp ?That is better suited to itextsharp support, I don't think it is a vb net issue.
Edit, here is a sample:
Imports ITextSharp
Imports ITextSharp.text
Imports ITextSharp.text.pdf
Imports System.IO
Imports System.Text
Public Class Form1
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim doc As New Document(ITextSharp.text.PageSize.LETTER, 10, 10, 42, 35)
doc.AddAuthor("Jerry O'Brien")
doc.AddCreator("The Creator")
doc.AddSubject("ITextSharp Sample")
doc.AddTitle("A treatise on the production of Portable Document Format files")
Dim writer As PdfWriter = PdfWriter.GetInstance(doc, New FileStream("D:\sample.pdf", FileMode.Create))
Dim Upass As String = "MumboJumbo"
Dim OPass As String = "HeebieJeebie"
Dim userpass() As Byte = Encoding.ASCII.GetBytes(Upass)
Dim ownerpass() As Byte = Encoding.ASCII.GetBytes(OPass)
writer.SetEncryption(userpass, ownerpass, 255, True)
doc.Open()
Dim para As New Paragraph("This is my first paragraph")
Dim pharse As New Phrase("This is my first phrase" & vbNewLine)
Dim chunk_ As New Chunk("This is my first chunk")
doc.Add(para)
doc.Add(pharse)
doc.Add(chunk_)
doc.Close()
End Sub
End Class
FYI - I have NO IDEA what the 255 and True mean, I just put something in there that fit. -
Edit multiple password-protected PDFs using Photoshop CS5 Javascript scripting.
Good Evening,
Situation: I have a huge stack of PDF files and I'm using Photoshop CS5 to slice out previews and other things automatically, using a self-built javascript. Some (100+) of these PDFs are password-protected. I have the password to these files.
Problem: Every time the script tries to open one of the protected PDFs it will open a popup, stop the whole process and wait for the user to input the password.
Question: Is there a way to add the password to the open command of the app.open(...) function? Or more simply put, can this be fully automated?
What I looked at so far: "PDFOpenOptions", "app.open(...)", the javascript reference("photoshop_cs5_javascript_ref.pdf") in general.
Basic Example code:
var f = new File("path to some password protected PDF");
var d = app.open(f); //this will trigger the password popup
doSomethingWithMyDocument(d);
d.close(SaveOptions.DONOTSAVECHANGES);
Any help would be greatly appreciated. I have access to Photoshop CS6 as well, if that somehow solves the problem.
If I'm looking at a dead-end, feel free to tell me too.It is possible to do that via Scripting.
If you are unable to create such a Script maybe you should look up the chapter »Creating data-driven graphics« in the documentation. -
Another question - using dynamic value body tag????
Can this be done?
I need to send an ASP dynamic value to my 'open browser
window' pop up.
Something like:
<body
onload="MM_openBrWindow('subscribe_pop.asp?email="&<%(Recordset1.Fields.Item("emailaddres s").Value)%>','','location=yes,width=400,height=200')">
Any ideas?
Thanks
AndyChange what you have to this -
<body onload="@@(onload)@@">
The downside to this method is that your popup link WILL NOT
BE MANAGED. If
you change the name of the page or the location of the page,
you will have
to change the value of this Template parameter, and then save
it to
propagate through the site. Then, of course, you will have to
upload your
local files again.
You do know that this popup will be blocked by modern
browsers, right?
Murray --- ICQ 71997575
Adobe Community Expert
(If you *MUST* email me, don't LAUGH when you do so!)
==================
http://www.projectseven.com/go
- DW FAQs, Tutorials & Resources
http://www.dwfaq.com - DW FAQs,
Tutorials & Resources
==================
"Andy" <[email protected]> wrote in message
news:[email protected]...
> Morning Dooza - Sorry it's me again ;-)
>
> Well i've part way through this but seem to have created
another problem.
> When i used the 'make attribute editable' the code
generated on the page
> that launches the pop up was:
> -----------
> <!-- InstanceEndEditable --><!--
InstanceBeginEditable name="head" -->
> <!-- InstanceEndEditable --><!-- InstanceParam
name="onload" type="text"
>
value="P7_initPM(0,0,1,-20,10);MM_openBrWindow('subscribe_pop.asp?custemail=<%=(Customers RS.Fields.Item("CustomerEmail").Value)%>','','location=yes,width=400,height=200')"
> -->
> </head>
>
> <body onload="P7_initPM(0,0,1,-20,10)">
> --------
>
> It didn't put the 'MM_openBrWindow' code in the Body
Tag, only in the
> 'InstanceParam name'
> I opened the page up in note pad and added it manually
and all the code
> worked as it should.
>
> The problem now is that when i change the template, my
page isn't updated
> at all.
>
> Before i used 'make attribute editable' my Body Tag
contained just the
> <body onload="P7_initPM(0,0,1,-20,10)">
>
> Any ideas??
>
> Thanks
> Andy
>
>
>
>
> "Dooza" <[email protected]> wrote in message
> news:[email protected]...
>> Andy wrote:
>>> Hi Dooza
>>>
>>> I'm still not getting the value passed to the
pop up :-(
>>>
>>> I followed the steps below and the page passing
the email address is
>>> producing the correct email.
>>> The subscriber page is still giving the Either
BOF or EOF is True error.
>>>
>>> I tried the subscriber page (local url) using
subscribe_pop.asp?ID=516
>>>
>>> 516 is my email address. The recordset on the
subscribe_pop.asp page
>>> pulls the email address based on the ID.
>>>
>>> For some reason this code just isn't sending the
value.
>>>
>>>
>>>
"P7_initPM(0,0,1,-20,10);MM_openBrWindow('subscribe_pop.asp?ID=<%=(CustomersRS.Fields.Ite m("CustomerEmail").Value)%>','','location=yes,width=400,height=200')"
>>>
>>> Really scratching my head now
>>
>> When you view the page in your browser that launches
the pop up, what
>> does the source look like for the body tag?
>>
>> Hang on, your passing the email address as the ID?
Are you sure you want
>> to do that? Don't you want to pass the ID? Maybe
thats where you are
>> going wrong?
>>
>> Dooza
>> --
>> Posting Guidelines
>>
http://www.adobe.com/support/forums/guidelines.html
>> How To Ask Smart Questions
>>
http://www.catb.org/esr/faqs/smart-questions.html
>
> -
How to use Boolean values from 2 different sources to stop a while loop?
I am working on a program for homework that states E5.4) Using a single Whil eLoop, construct a VI that executes a loop N times or until the user presses a stop button. Be sure to include the Time Delay Exress Vi so the user has time to press the stop botton.
I am doing this right now but it seems as though I can only connect one thing to the stop sign on th while loop. It won't let me connect a comparision of N and the iterations as well as the stop button to the stop sign on the while loop. So how would I be able to structure it so that it stops if it receives a true Boolean value from either of the 2 sources (whichever comes first)?
Basically, I cannot wire the output of the comparison of N and iterations as well as the stop button to the stop button on the whlie loop to end it. Is there a solution?
Thanks!
Solved!
Go to Solution.Rajster16 wrote:
Using a single Whil eLoop, construct a VI that executes a loop N times or until the user presses a stop button.
Look in the boolean palette for something similar to the word hightlighted in red above.
LabVIEW Champion . Do more with less code and in less time . -
Hi All;
Below is my query and the output and i need to remove null values from the output
Any help regarding same is much appreciated
Thanks
; WITH CTE AS
select a.opportunityid,a.new_entrypoint_displayname,c.parentcustomerid,c.contactid,c.fullname,a.new_mainprogramme_idname,
a.new_subprogramme_idname,
a.owneridname,
a.new_dateofapplication,count(appt.activityid) as NoOfAppointments,
ap.scheduledstart,
ap.scheduleddurationminutes
from opportunity a
left join contact c on (c.contactid = a.parentcontactid)
inner join activitypointer ap on ( ap.regardingobjectid = c.contactid )
inner join appointment appt on (appt.activityid = ap.ActivityId)
where
appt.new_didmeetingtakeplace = 1
and appt.statecode = 1 and
(a.SCRIBE_DELETEDON is null and c.SCRIBE_DELETEDON is null and ap.SCRIBE_DELETEDON is null and appt.SCRIBE_DELETEDON is null)
group by a.opportunityid,a.new_entrypoint_displayname,c.parentcustomerid, c.contactid,c.fullname,a.owneridname,
a.new_mainprogramme_idname,a.new_subprogramme_idname,
a.new_dateofapplication,ap.scheduledstart,
ap.scheduleddurationminutes
union
select a.opportunityid,a.new_entrypoint_displayname,c.parentcustomerid,c.contactid,c.fullname,
a.new_mainprogramme_idname,a.new_subprogramme_idname,a.owneridname,
a.new_dateofapplication,count(appt.activityid) as NoOfAppointments,
ap.scheduledstart,
ap.scheduleddurationminutes
from opportunity a
left join contact c on (c.contactid = a.parentcontactid)
inner join activitypointer ap on (ap.regardingobjectid = a.opportunityid)
inner join appointment appt on (appt.activityid = ap.ActivityId)
where
appt.new_didmeetingtakeplace = 1
and appt.statecode = 1 and
(a.SCRIBE_DELETEDON is null and c.SCRIBE_DELETEDON is null and ap.SCRIBE_DELETEDON is null and appt.SCRIBE_DELETEDON is null)
group by a.opportunityid,a.new_entrypoint_displayname,c.parentcustomerid,c.contactid,a.owneridname,
a.new_mainprogramme_idname,a.new_subprogramme_idname,
c.fullname,a.new_dateofapplication,
ap.scheduledstart,
ap.scheduleddurationminutes
CTE2 As
select opportunityid,parentcustomerid,new_entrypoint_displayname,contactid,fullname,
new_mainprogramme_idname,new_subprogramme_idname,cte.owneridname,
ac.new_businessstartdate,new_dateofapplication,(NoOfAppointments),
case when ac.new_businessstartdate > = CTE.scheduledstart
then (CTE.scheduleddurationminutes) end as PreStartHours,
case when ac.new_businessstartdate < CTE.scheduledstart
then (CTE.scheduleddurationminutes) end as PostStartHours
pp.new_outputs,
case when po.new_outputsname = 'Pre Start Assist'
then 'Yes' else 'No' end as Precheck,
case when po.new_outputsname = 'Business Assist'
then 'Yes' else 'No' end as Buscheck
from CTE
join account ac on (ac.accountid = CTE.parentcustomerid)
join dbo.new_programmeoutput as po on (CTE.opportunityid = po.new_relatedopportunity)
join dbo.new_programmeprofile pp on (
po.new_mainprogrammeid = pp.new_mainprogrammeid and
po.new_subprogrammeid = pp.new_subprogrammeid
and pp.new_claimstartdate = po.new_claimdate
and pp.new_outputsname = po.new_outputsname)
where (ac.SCRIBE_DELETEDON is null)
group by opportunityid,parentcustomerid,new_entrypoint_displayname,contactid,fullname,ac.new_businessstartdate,new_dateofapplication,NoOfAppointments,
scheduledstart,new_mainprogramme_idname,new_subprogramme_idname,cte.owneridname,scheduleddurationminutes
select opportunityid,parentcustomerid,new_entrypoint_displayname,contactid,fullname,
new_mainprogramme_idname,new_subprogramme_idname,cte2.owneridname,
new_businessstartdate,new_dateofapplication,(NoOfAppointments),
PreStartHours, PostStartHours,po.new_programmeoutputid,
case when (new_outputsname) = 'Pre Start Assist'
then 'Yes' else 'No' end as Precheck,
case when (new_outputsname) = 'Business Assist'
then 'Yes' else 'No' end as Buscheck --po.*
from cte2
left join dbo.new_programmeoutput as po on (cte2.opportunityid = po.new_relatedopportunity)
where po.new_claimmonthidname is not null and po.statuscode_displayname = 'claimed'
group by opportunityid,parentcustomerid,new_entrypoint_displayname,contactid,fullname,
new_mainprogramme_idname,new_subprogramme_idname,cte2.owneridname,
new_businessstartdate,new_dateofapplication,(NoOfAppointments),
PreStartHours, PostStartHours,po.new_programmeoutputid,new_outputsname
--where new_claimmonthidname is not null --and CTE2.PreStartHours is not null and CTE2.PostStartHours is not null
Pradnya07i need to remove null values from the output
Hello,
What exactly do you mean with "remove", to filter the rows out from result set or to replace the null value by an other value e.g. 0? This can be done with the
ISNULL function:
ISNULL(case when ac.new_businessstartdate > = CTE.scheduledstart
then (CTE.scheduleddurationminutes) end, 0) as PreStartHours, ...
Olaf Helper
[ Blog] [ Xing] [ MVP] -
Broadcasting to Enterprise Portal using Bex Broadcaster from Query Designer
I have already been able to broadcast from Query Designer using BEx Broadcaster to the portal based on a role or a user.
I select "Export into Enterprise Portal" as the Distribution Type.
I then select "Export Document to Personal Portfolio" and then enter a role.
Then I check "User-specific" because I want it to be user specific.
This all works fine.
Now I get to my question.
Can I go one step further and broadcast to a folder call... lets say "Sales" inside of their Personal Portfolio?Hi Eric,
I have the same problem. Were you able to resolve it? -
RENAME/COPY/DELETE a file using FTP Adapter in 11g using dynamic values
Hi All
We have a requirement to do the above for a client. I was able to find a post\blog that tells you to add the below properties in FTP adapter JCA file and it works but,
<interaction-spec className="oracle.tip.adapter.ftp.outbound.FTPIoInteractionSpec">
<property name="SourcePhysicalDirectory" value="foo1"/>
<property name="SourceFileName" value="bar1"/>
<property name="TargetIsRemote" value="false"/>
<property name="TargetPhysicalDirectory" value="foo2"/>
<property name="TargetFileName" value="bar2"/>
<property name="Type" value="COPY"/>
</interaction-spec>
The problem is that how to assign these values dynamically (from xpath or bpel variables etc). Can somebody provide me with some pointers? Its very urgent!Use the below approach to set the directory and file names dynamically.
In BPEL source mode, specify the bpelx:inputProperty. Set the values for these variables in bpel. These can also be accessed as bpel preference values.
<invoke>
<bpelx:inputProperty name="jca.ftp.SourceFileName" variable="SourceFileNameVar"/>
<bpelx:inputProperty name="jca.ftp.TargetFileName" variable="TargetFileNameVar"/>
</invoke> -
Using dynamic value in procedure on column
I want a PL/sql procedure to select the data from the column dynamically into a variable .
My friend suggested its not possible in PL/sql ,its only possible in sql .
What i want is when i execute the PL/sql procedure the a_1 must get the value of the data in the table,i do not want to use execute immediate in pl/sql.
I create a table A
create table A (a1 number,a2 number,a3 number);
insert into a values (1,2,3);
then i create a procedure
create or replace
procedure test_a (var IN number)
as
a_1 number;
i number;
z varchar2(5);
begin
if var=1
then
i:=1;
elsif var = 2
then
i:=2;
z:='A2';
end if;
SELECT 'a'||i into a_1 from a;
end;
Edited by: user536416 on May 13, 2010 4:03 AMI prefer reference cursors over execute immediate if I must do dynamic SQL (and have learned not to do it unless necessary - among other things dynamic SQL is hard to debug and maintain).
The advantages to ref cursors are
* execute immedate will only retrieve one row, ref cursors as many as you want
* easier for me to build the query first, then execute it (though you can do this with execute immediate too) for debugging
You can buiid the query dynamcially but have to be careful to make sure the select list matches the INTO clause on the fetch statements. Although the queries in the example below are hard coded I could have done something like
v_command_c := 'select '||var1||', '||var2||' from '''||table_name||'''';
open refcur for v_command_c;To randomize your column selection use something like the above with IF logic and a randomizer, possibly the DBMS_RANDOM package or a time extraction.
Something like
SET SCAN OFF
SET SERVEROUTPUT ON
DECLARE
--define composite data types
--reference cursor type - structure
TYPE RefCursorType IS REF CURSOR;
--collection (index-by table) type - structure
TYPE TablesTableType IS TABLE OF user_tables.table_name%TYPE
INDEX BY BINARY_INTEGER;
--define ref cursors to be used in BEGIN section
UserTablesCursor RefCursorType;
UserViewCursor RefCursorType;
--define actual index-by tables to be used in BEGIN section
NamesTable TablesTableType;
ViewsTable TablesTableType;
--define internal procedures to be used in this script
PROCEDURE ListItems(RefCursor IN RefCursorType,
DataTable IN OUT TablesTableType
) IS
Counter INTEGER := 1;
TableName user_tables.table_name%TYPE;
BEGIN
FETCH RefCursor INTO DataTable(Counter);
Counter := Counter + 1;
WHILE RefCursor%FOUND LOOP
FETCH RefCursor INTO DataTable(Counter);
Counter := Counter + 1;
END LOOP;
END; --ListItems;
PROCEDURE WriteItems(DataTable IN TablesTableType) IS
BEGIN
FOR i IN 1..DataTable.count LOOP
dbms_output.put_line(DataTable(i));
END LOOP;
END; --WriteItems;
BEGIN
OPEN UserTablesCursor FOR
SELECT table_name
FROM user_tables;
ListItems(UserTablesCursor,NamesTable);
CLOSE UserTablesCursor;
dbms_output.put_line('user_tables');
dbms_output.put_line('--------------');
WriteItems(NamesTable);
--second defintion & set of calls
dbms_output.put_Line(CHR(13));
OPEN UserTablesCursor FOR
SELECT view_name
FROM user_views;
ListItems(UserTablesCursor,ViewsTable);
CLOSE UserTablesCursor;
dbms_output.put_line('user_views');
dbms_output.put_line('--------------');
WriteItems(ViewsTable);
END;
/Edited by: riedelme on May 13, 2010 5:44 AM -
How to use dynamic values for service-ref
service-ref element allows for static configuration for endpoint reference as follows:
<copy>
<from>
<literal>
<sref:service-ref xmlns:sref="http://docs.oasis-open.org/wsbpel/2.0/serviceref">
<EndpointReference xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable">
<Address>http://localhost:8080/mockservice</Address>
</EndpointReference>
</sref:service-ref>
</literal>
</from>
<to>$serviceref</to>
</copy>
I want to change the address value dynamically in service-ref element. How can I achieve it ?Hi,
Why don't you try:
1. Bpel references
You can select a BPEL reference property in your composite.xml and use it within your bpel process. This is explained here:
http://orasoa.blogspot.co.uk/2009/08/soa-11g-preferences.html
Then you can create a deployment configuration plan. Right-click on the composite file and generate a deployment configuration plan for your composite. This should create a search/replace construction for your preference.
2. DVM (Data Value Maps)
You can populate the address by using dvm lookup function. Create a DVM file with two columns, one to specify the Address/URL and populate the other column with the actual value. Use the address as your unique lookup criteria to retrieve the value. This value can be configured per environment.
Hope this helps.
Thanks
Sander
Maybe you are looking for
-
Table for Dispute case ID and accounting document number
Hi, For a given dispute case ID (EXT_KEY) I am unable to find the corresponding accounting document number ( BELNR ) for this dispute case. I am able to see the accounting document for the dispute case on the transaction UDM_DISPUTE but then I am not
-
What's wrong with my Mac's disk drive?
I have a Macbook running OS X Mountain Lion (10.7.5). It has multiple users on it because I share it with other family members. A member of our family is getting a new computer and is giving me and those who share the computer with me, the old one. T
-
How to track how long a program method takes to execute?
So i am writing a radix sort in java and i want to see how long it takes to run. I was wondering how i would get the exact time that a method would take? Calendar cal = new GregorianCalendar(); int ms = cal.get(Calendar.MILLISECOND); I am n
-
What is the best and easiest way to speed up a Mac-MINI?
What is the best and easiest way to speed up a Mac Mini without adding memory?
-
Apache Jakarta Commons Logging
Hi guys, I found this note in the log4j.properties file. Could you expand this note by just a little to explain where to put the file so that its settings are found and used? That would be a lot more user friendly than sending someone off to another