EL functions MUST be public and static.
Also, the web.xml entries for these 2 types are distinct.
Also, custom tags come in two flavours:
The Classical custom tags model and the Simple tags model.
EL function DD entry:
<function>
<name>XX</name>
<function-class>zzz.yyy</function class>
<function-signature>java.lang
String XX(java.lang.String)</function-signature>
</function>
Custom tag DD entry:
<tag>
<name>greet</tag>
<tag-class>ddd.eee</tag-class>
<attribute>
<name>user</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
BTW, custom tags are far more versatile than EL functions.