F4fpackager generates bad tenant path?
Hi,
Now that f4fpackager is also encrypting the files, I tried playing them. When the player posts to the licenseserver (to flashaccessserver/tenants/sampletenant/flashaccess/license/v1) it gets an HTTP 500 Internal Server Error response, and there is exception information in the flashaccess-partition log file (see below).
It looks as though something in the data sent is looking for /home/apache/apache-tomcat-6.0.29/licenseserver/flashaccessserver/tenants/tenants/flashac cess-tenant.xml
when in fact the file is located in /home/apache/apache-tomcat-6.0.29/licenseserver/flashaccessserver/tenants/flashaccess-ten ant.xml
This is how the license server is defined in the f4fpackager config file:
<license-server-url>http://ootv3:8080/flashaccessserver/tenants/sampletenant</license-server-url>
Any help would be much appreciated.
Thanks,
- Naomi
From the flashaccess-partition log file:
[#:1] 2011-01-25 11:50:11,436 INFO [[Partition(flashaccessserver)].com.adobe.flashaccess.server.license.context.SimpleContex tFactory] Creating class loader for partition 'flashaccessserver' with libraries '[file:/home/apache/apache-tomcat-6.0.29/licenseserver/flashaccessserver/libs/, file:/home/apache/apache-tomcat-6.0.29/licenseserver/flashaccessserver/libs/flashaccess-l icense-server-ext-sample.jar]'
[#:1] 2011-01-25 11:50:11,439 DEBUG [[Partition(flashaccessserver)].com.adobe.flashaccess.server.license.engine.LicenseEngine ] Started processing request...
[#:1] 2011-01-25 11:50:11,451 ERROR [[Partition(flashaccessserver)].com.adobe.flashaccess.server.license.engine.LicenseEngine ] Error occurred processing license acquisition request
net.sf.ehcache.constructs.blocking.LockTimeoutException: Could not update object for cache entry with key "flashaccessserver////tenants".
at net.sf.ehcache.constructs.blocking.UpdatingSelfPopulatingCache.get(UpdatingSelfPopulating Cache.java:90)
at net.sf.ehcache.constructs.blocking.BlockingCache.get(BlockingCache.java:558)
at com.adobe.flashaccess.server.license.configuration.cachedecorator.CacheDecoratorConfigura tionFactory.getTenantConfiguration(CacheDecoratorConfigurationFactory.java:211)
at com.adobe.flashaccess.server.license.context.ContextImpl.getTenantConfiguration(ContextIm pl.java:98)
at com.adobe.flashaccess.server.license.extension.CustomAuthorizerChainExtension.setConfig(C ustomAuthorizerChainExtension.java:61)
at com.adobe.flashaccess.server.license.extension.CustomAuthorizerChainExtension.setConfig(C ustomAuthorizerChainExtension.java:52)
at com.adobe.flashaccess.server.generic.extension.ExtensionChain.<init>(ExtensionChain.java: 50)
at com.adobe.flashaccess.server.generic.engine.AbstractEngine.processLicenseRequest(Abstract Engine.java:67)
at com.adobe.flashaccess.server.license.servlet.LicenseEngineDelegatorServlet.doPost(License EngineDelegatorServlet.java:53)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j ava:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java: 436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:342)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at com.adobe.flashaccess.server.license.servlet.LicenseRequestDispatchFilter.doFilter(Licens eRequestDispatchFilter.java:72)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j ava:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.adobe.flashaccess.server.license.servlet.RequestCountFilter.doFilter(RequestCountFilt er.java:74)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j ava:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.ja va:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Caused by: net.sf.ehcache.CacheException: Could not fetch object for cache entry with key "flashaccessserver////tenants".
at net.sf.ehcache.constructs.blocking.SelfPopulatingCache.get(SelfPopulatingCache.java:87)
at net.sf.ehcache.constructs.blocking.UpdatingSelfPopulatingCache.get(UpdatingSelfPopulating Cache.java:76)
... 32 more
Caused by: com.adobe.flashaccess.server.license.configuration.deployment.filebased.MultiTenantDeploy ment$DeploymentException: Could not find tenant configuration file 'flashaccess-tenant.xml' for partition 'flashaccessserver', tenant 'tenants'
at com.adobe.flashaccess.server.license.configuration.deployment.filebased.MultiTenantDeploy ment.getTenantConfigurationResource(MultiTenantDeployment.java:85)
at com.adobe.flashaccess.server.license.configuration.commonsadapter.CommonsConfigurationBas edFactory.getTenantConfiguration(CommonsConfigurationBasedFactory.java:89)
at com.adobe.flashaccess.server.license.configuration.cachedecorator.CacheDecoratorConfigura tionFactory$TenantConfigurationEntryFactory.getWrappedConfiguration(CacheDecoratorConfigur ationFactory.java:352)
at com.adobe.flashaccess.server.license.configuration.cachedecorator.CacheDecoratorConfigura tionFactory$BaseUpdatingCacheEntryFactory.createEntry(CacheDecoratorConfigurationFactory.j ava:315)
at net.sf.ehcache.constructs.blocking.SelfPopulatingCache.get(SelfPopulatingCache.java:71)
... 33 more
Caused by: java.io.FileNotFoundException: /home/apache/apache-tomcat-6.0.29/licenseserver/flashaccessserver/tenants/tenants/flashac cess-tenant.xml
at com.adobe.flashaccess.server.license.configuration.deployment.filebased.MultiTenantDeploy ment$UpdatableFileSystemResource.<init>(MultiTenantDeployment.java:263)
at com.adobe.flashaccess.server.license.configuration.deployment.filebased.MultiTenantDeploy ment.getTenantConfigurationResource(MultiTenantDeployment.java:83)
... 37 more
[#:2] 2011-01-25 11:50:11,577 DEBUG [[Partition(flashaccessserver)].com.adobe.flashaccess.server.license.engine.LicenseEngine ] Started processing request...
[#:2] 2011-01-25 11:50:11,578 ERROR [[Partition(flashaccessserver)].com.adobe.flashaccess.server.license.engine.LicenseEngine ] Error occurred processing license acquisition request
net.sf.ehcache.constructs.blocking.LockTimeoutException: Could not update object for cache entry with key "flashaccessserver////tenants".
at net.sf.ehcache.constructs.blocking.UpdatingSelfPopulatingCache.get(UpdatingSelfPopulating Cache.java:90)
at net.sf.ehcache.constructs.blocking.BlockingCache.get(BlockingCache.java:558)
at com.adobe.flashaccess.server.license.configuration.cachedecorator.CacheDecoratorConfigura tionFactory.getTenantConfiguration(CacheDecoratorConfigurationFactory.java:211)
at com.adobe.flashaccess.server.license.context.ContextImpl.getTenantConfiguration(ContextIm pl.java:98)
at com.adobe.flashaccess.server.license.extension.CustomAuthorizerChainExtension.setConfig(C ustomAuthorizerChainExtension.java:61)
at com.adobe.flashaccess.server.license.extension.CustomAuthorizerChainExtension.setConfig(C ustomAuthorizerChainExtension.java:52)
at com.adobe.flashaccess.server.generic.extension.ExtensionChain.<init>(ExtensionChain.java: 50)
at com.adobe.flashaccess.server.generic.engine.AbstractEngine.processLicenseRequest(Abstract Engine.java:67)
at com.adobe.flashaccess.server.license.servlet.LicenseEngineDelegatorServlet.doPost(License EngineDelegatorServlet.java:53)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j ava:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java: 436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:342)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at com.adobe.flashaccess.server.license.servlet.LicenseRequestDispatchFilter.doFilter(Licens eRequestDispatchFilter.java:72)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j ava:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.adobe.flashaccess.server.license.servlet.RequestCountFilter.doFilter(RequestCountFilt er.java:74)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j ava:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.ja va:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Caused by: net.sf.ehcache.CacheException: Could not fetch object for cache entry with key "flashaccessserver////tenants".
at net.sf.ehcache.constructs.blocking.SelfPopulatingCache.get(SelfPopulatingCache.java:87)
at net.sf.ehcache.constructs.blocking.UpdatingSelfPopulatingCache.get(UpdatingSelfPopulating Cache.java:76)
... 32 more
Caused by: com.adobe.flashaccess.server.license.configuration.deployment.filebased.MultiTenantDeploy ment$DeploymentException: Could not find tenant configuration file 'flashaccess-tenant.xml' for partition 'flashaccessserver', tenant 'tenants'
at com.adobe.flashaccess.server.license.configuration.deployment.filebased.MultiTenantDeploy ment.getTenantConfigurationResource(MultiTenantDeployment.java:85)
at com.adobe.flashaccess.server.license.configuration.commonsadapter.CommonsConfigurationBas edFactory.getTenantConfiguration(CommonsConfigurationBasedFactory.java:89)
at com.adobe.flashaccess.server.license.configuration.cachedecorator.CacheDecoratorConfigura tionFactory$TenantConfigurationEntryFactory.getWrappedConfiguration(CacheDecoratorConfigur ationFactory.java:352)
at com.adobe.flashaccess.server.license.configuration.cachedecorator.CacheDecoratorConfigura tionFactory$BaseUpdatingCacheEntryFactory.createEntry(CacheDecoratorConfigurationFactory.j ava:315)
at net.sf.ehcache.constructs.blocking.SelfPopulatingCache.get(SelfPopulatingCache.java:71)
... 33 more
Caused by: java.io.FileNotFoundException: /home/apache/apache-tomcat-6.0.29/licenseserver/flashaccessserver/tenants/tenants/flashac cess-tenant.xml
at com.adobe.flashaccess.server.license.configuration.deployment.filebased.MultiTenantDeploy ment$UpdatableFileSystemResource.<init>(MultiTenantDeployment.java:263)
at com.adobe.flashaccess.server.license.configuration.deployment.filebased.MultiTenantDeploy ment.getTenantConfigurationResource(MultiTenantDeployment.java:83)
... 37 more
That was the problem! My apologies - I was sure I had lifted the license server URL from my configuration for the Flash Access packager but I see I typed it freehand without checking the documentation first.
Thanks and sorry for the trouble!
- Naomi
Similar Messages
-
O/R mapping tool generates bad descriptors for CMP2.0
The O/R tool has many problems with EJB-CMP 2.0.
It generates bad ejb-jar.xml (misses the <cmr-field-type> tag, has the same relationship field included in both the <entity> tag and the <relationships> tag).
The worst part is that is generates bad TopLink descriptors!
I have numerous indirect 1-1 bean-pojo (plain old java object). When I have the 'tool' generate the ejb-jar.xml and deployment xml it generates all these relationships incorrectly.
The O/R 'tool' forces you to use transparent indirection for CMP 2.0 relationships; transparent indirection does not allow you to specify 'use method accessing'. Fine. But when I go to deploy the compiled jar, I get ALL sorts of errors complaining that:
EXCEPTION [TOPLINK-1] (TopLink (WLS CMP) - 9.0.3 (Build 423)): oracle.toplink.exceptions.DescriptorException
EXCEPTION DESCRIPTION: The attribute [addressToDesc] is not declared as type ValueHolderInterface, but its mapping uses indirection.
MAPPING: oracle.toplink.mappings.OneToOneMapping[addressToDesc]
DESCRIPTOR: Descriptor(...
ARGH!! What the heck do I need to do to get this 'tool' to work? It won't LET me use valueholder in EJB-CMP2.0, but then it complains when when I don't!?!?!
Frustrated,
Andrew(from toplink support)
Andrew,
Hi there. I've performed some research regarding
your question, and it appears that having an
"automatic" 1:1 indirect relationship between an EJB
2.0 Entity Bean and a dependent Java object is not
currently supported by TopLink. Examining the
documentation, this non-support unfortunately isn't
documented. I have entered a feature request on your
behalf so that we might be able to support it in a
future major version of TopLink.
However, there are a couple of alternatives which
you can use:
1) We do support non-indirect 1:1 relationships
between an EJB 2.0 Entity Bean and a dependent Java
object. You could disable indirection, and maybe
make the relationship a batch read relationship so
that your performance will not be degraded.
2) You can write a concrete getter and setter, and
provide an instance variable on the entity bean for
your dependent object of type ValueHolderInterface.
Provide the private getters and setters for set and
get -Holder. Map this normally using TopLink, and
make sure Indirection is specified in the Mapping
Workbench.
IMPORTANT: TopLink will handle the normal
persistence management for this relationship,
however you will need to handle the merging back of
this object yourself (you had to do this in EJB 1.1
in TopLink as well). Luckily there are good docs on
this, and it's covered in detail - look at the
TopLink for WebLogic documentation : Runtime
Considerations > Managing dependent objects.
Personally, I would implement solution 1) with batch
reading on the attribute, because the dependent
object shouldn't be that "big" (otherwise it would
be an entity bean). This is an easier solution,
however you should investigate 2) fully yourself. -
Mappingtool generates bad DDL for sybase (J2ee tutorial)
Running the mappingtool on the J2EE tutorial app (3.0.0RC1) generates bad
DDL for sybase. It's trying to create a table with a column of type
"IndexName":
C:\devtools\kodo\samples\j2ee>mappingtool -a refresh package.jdo
0 INFO [main] kodo.Tool - Mapping tool running on type "class
samples.j2ee.Car" with action "refresh".
0 INFO [main] kodo.Tool - The tool is now reading existing schema
information; this process may take some time. En
able the kodo.jdbc.Schema logging category to see messages about schema
data. Also see the -readSchema tool flag.
3716 INFO [main] kodo.Tool - Recording mapping and schema changes.
Exception in thread "main" kodo.util.FatalException:
com.solarmetric.jdbc.ReportingSQLException: Can't specify a length
or scale on type 'IndexName'.
{stmnt 7576378: CREATE TABLE CAR (COLOR IndexName(255) NULL, JDOCLASS
IndexName(255) NULL, JDOID NUMERIC(38) NOT NULL,
JDOVERSION INT NULL, MAKE IndexName(255) NULL, MODEL IndexName(255) NULL,
YEAR0 IndexName(255) NULL, UNQ_INDEX NUMERIC I
DENTITY UNIQUE, CONSTRAINT P_CAR PRIMARY KEY (JDOID))} [code=2716,
state=ZZZZZ]
NestedThrowables:
com.solarmetric.jdbc.ReportingSQLException: Can't specify a length or
scale on type 'IndexName'.
{stmnt 7576378: CREATE TABLE CAR (COLOR IndexName(255) NULL, JDOCLASS
IndexName(255) NULL, JDOID NUMERIC(38) NOT NULL,
JDOVERSION INT NULL, MAKE IndexName(255) NULL, MODEL IndexName(255) NULL,
YEAR0 IndexName(255) NULL, UNQ_INDEX NUMERIC I
DENTITY UNIQUE, CONSTRAINT P_CAR PRIMARY KEY (JDOID))} [code=2716,
state=ZZZZZ]
at kodo.jdbc.meta.MappingTool.record(MappingTool.java:431)
at kodo.jdbc.meta.MappingTool.run(MappingTool.java:790)
at kodo.jdbc.meta.MappingTool.main(MappingTool.java:729)
NestedThrowablesStackTrace:
com.solarmetric.jdbc.ReportingSQLException: Can't specify a length or
scale on type 'IndexName'.
{stmnt 7576378: CREATE TABLE CAR (COLOR IndexName(255) NULL, JDOCLASS
IndexName(255) NULL, JDOID NUMERIC(38) NOT NULL,
JDOVERSION INT NULL, MAKE IndexName(255) NULL, MODEL IndexName(255) NULL,
YEAR0 IndexName(255) NULL, UNQ_INDEX NUMERIC I
DENTITY UNIQUE, CONSTRAINT P_CAR PRIMARY KEY (JDOID))} [code=2716,
state=ZZZZZ]
at
com.solarmetric.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:67)
at
com.solarmetric.jdbc.LoggingConnectionDecorator.access$400(LoggingConnectionDecorator.java:19)
at
com.solarmetric.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingStatement.executeUpdate(LoggingConne
ctionDecorator.java:506)
at
com.solarmetric.jdbc.DelegatingStatement.executeUpdate(DelegatingStatement.java:125)
at kodo.jdbc.schema.SchemaTool.executeSQL(SchemaTool.java:1042)
at kodo.jdbc.schema.SchemaTool.createTable(SchemaTool.java:803)
at kodo.jdbc.schema.SchemaTool.add(SchemaTool.java:334)
at kodo.jdbc.schema.SchemaTool.add(SchemaTool.java:186)
at kodo.jdbc.meta.MappingTool.record(MappingTool.java:364)
at kodo.jdbc.meta.MappingTool.run(MappingTool.java:790)
at kodo.jdbc.meta.MappingTool.main(MappingTool.java:729)
Anyone else seen this? It works ok with Hypersonic (though i can't get the
tutorial app to run with hypersonic - see my earlier post).
Alex.Some bugs in RCs sometimes don't make it into Bugzilla as it is a
release candidate and not production quality.
I would reocmmend upgrading as it fixes a number of major bug fixes and
you should be able to use the same eval key.
Alex Robbins wrote:
Abe White wrote:
I should also have asked: what JDBC driver are you using?Hi Abe,
I haven't tried with RC2 - has this been fixed in RC2? I didn't find this
bug on bugzilla.
I'm using Sybase JConnect JDBC driver (com.sybase.jdbc2.jdbc.SybDriver in
jconn2.jar) - looks like this is the version:
jConnect (TM) for JDBC(TM)/5.5(Build 25008)/P/JDK12/Tue May 29 14:37:46
2001
Should I upgrade from RC1 to RC2, and if so, can I continue to use the
same eval license key or can i download a new one?
thanks,
alex
Stephen Kim
[email protected]
SolarMetric, Inc.
http://www.solarmetric.com -
Revision: 20738
Revision: 20738
Author: [email protected]
Date: 2011-03-09 13:22:36 -0800 (Wed, 09 Mar 2011)
Log Message:
Check for bad directory-path argument to destination-include and throw an exception.
Modified Paths:
blazeds/trunk/modules/common/src/flex/messaging/config/LocalFileResolver.java
blazeds/trunk/modules/common/src/flex/messaging/errors.properties
blazeds/trunk/modules/core/src/flex/messaging/config/ServletResourceResolver.javaHi Matthias,
Sorry, if this reply seems like a products plug (which it is), but this is really how we solve this software engineering challenge at JKI...
At JKI, we create VI Packages (which are basically installers for LabVIEW instrument drivers and toolkits) of our reusable code (using the package building capabilities of VIPM Professional). We keep a VI Package Configuration file (that includes a copy of the actual packages) in each of our project folders (and check it into source code control just as we do for all our project files). We also use VIPM Enterprise to distribute new VI Packages over the network.
Also, as others have mentioned, we use the JKI TortoiseSVN Tool to make it easy to use TortoiseSVN directly from LabVIEW.
Please feel free to contact JKI if you have any specific questions about these products.
Thanks,
-Jim -
Studio 12: C compiler generates bad code with -m64 -KPIC -xO2
Hello,
after upgrading my Solaris 10/x64 machine from Studio 11 to Studio 12 some problems were fixed, but others came up; like this one:
I have a code snippet that obviously causes the C compiler to generate wrong code if compiled with options -m64 -KPIC -xO2. If any of these options are missing, it runs fine. Here's the example code:
#include <stdio.h>
#include <strings.h>
static int do_something() { return 0; }
static int foo() {
fprintf(stderr, "\n!! BUG: BAD CODE! unexpected function call foo()!\n\n");
return 222;
static int bar() {
fprintf(stdout, "\nOK: bar() called\n\n");
return 0;
static const struct {
const char* name;
int (*func)();
int flag;
} tab[] = {
{ "foo", &foo, 0 },
{ "bar", &bar, 0 },
{ 0, 0, 0 }
int main(int argc, const char** argv) {
int i;
for (i=0; tab.name; i++) {
if( strcmp(tab[i].name, "bar") == 0 ) {
if(tab[i].flag) { /* not reached */
if(!do_something()) {
return 2;
return (*tab[i].func)();
return 1; /* not reached */
Many lines seem to be bogus, but they are actually needed to reproduce the problem.
This is what happens:# cc -m64 -KPIC -xO2 bug.c && ./a.out ; echo $?
!! BUG: BAD CODE! unexpected function call foo()!
222
If I compile with debugging information (-g), I get expected behavior, which is:# cc -m64 -KPIC -g bug.c && ./a.out ; echo $?
OK: bar() called
0
While creating the test case I've also seen SIGSEGV at runtime in the bug case - which is probably due to a wrong calculated function address for jmp (just guessing).
Does anyone know if this is a known bug?
Any help is appreciated.
The rest of this posting is information about my system and Studio 12 patch level:# uname -a
SunOS v20 5.10 Generic_137112-08 i86pc i386 i86pc
# /usr/SUNWspro/bin/version
Machine hardware: i86pc
OS version: 5.10
Processor type: i386
Hardware: i86pc
The following components are installed on your system:
Sun Studio 12
Sun Studio 12 C Compiler
Sun Studio 12 C++ Compiler
Sun Studio 12 Tools.h++ 7.1
Sun Studio 12 C++ Standard 64-bit Class Library
Sun Studio 12 Garbage Collector
Sun Studio 12 Fortran 95
Sun Studio 12 Debugging Tools (including dbx)
Sun Studio 12 IDE
Sun Studio 12 Debugger GUI
Sun Studio 12 Performance Analyzer (including collect, ...)
Sun Studio 12 X-Designer
Sun Studio 12 VIM editor
Sun Studio 12 XEmacs editor
Sun Studio 12 Performance Library
Sun Studio 12 LockLint
Sun Studio 12 Building Software (including dmake)
Sun Studio 12 Documentation Set
Sun Studio 12 /usr symbolic links and GNOME menu item
version of "/usr/SUNWspro/bin/../prod/bin/../../bin/cc": Sun C 5.9 SunOS_i386 Patch 124868-07 2008/10/07
version of "/usr/SUNWspro/bin/../prod/bin/../../bin/CC": Sun C++ 5.9 SunOS_i386 Patch 124864-08 2008/10/16
version of "/usr/SUNWspro/bin/../prod/bin/../../bin/f90": Sun Fortran 95 8.3 SunOS_i386 Patch 127002-04 2008/04/16
version of "/usr/SUNWspro/bin/../prod/bin/../../bin/dbx": Sun Dbx Debugger 7.6 SunOS_i386 Patch 124873-06 2008/08/20
version of "/usr/SUNWspro/bin/../prod/bin/../../bin/analyzer": Sun Analyzer 7.6 SunOS_i386 Patch 126996-04 2008/09/03
version of "/usr/SUNWspro/bin/../prod/bin/../../bin/dmake": Sun Distributed Make 7.8 SunOS_i386 Patch 126504-01 2007/07/19I'm watching Bug ID: [6774287|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6774287] for quite a while and it seems to be fixed some time ago (State: 8-Fix Available, bug). Does anybody know if the fix made it in some officially available SunStudio 12 C compiler (backend) patch already? I'm using this SS12 patch-level meanwhile:
# /usr/SUNWspro/bin/version
version of "/usr/SUNWspro/bin/../prod/bin/../../bin/cc": Sun C 5.9 SunOS_i386 Patch 124868-08 2008/11/25
version of "/usr/SUNWspro/bin/../prod/bin/../../bin/CC": Sun C++ 5.9 SunOS_i386 Patch 124864-09 2008/12/16
version of "/usr/SUNWspro/bin/../prod/bin/../../bin/f90": Sun Fortran 95 8.3 SunOS_i386 Patch 127002-05 2008/10/21
version of "/usr/SUNWspro/bin/../prod/bin/../../bin/dbx": Sun Dbx Debugger 7.6 SunOS_i386 Patch 124873-06 2008/08/20
version of "/usr/SUNWspro/bin/../prod/bin/../../bin/analyzer": Sun Analyzer 7.6 SunOS_i386 Patch 126996-04 2008/09/03
version of "/usr/SUNWspro/bin/../prod/bin/../../bin/dmake": Sun Distributed Make 7.8 SunOS_i386 Patch 126504-01 2007/07/19 -
How to generate bad records for varchar2 type
Hi
Iam using sqlldr to load records from a flat file to a table.
Table columns contains varchar2 datatype
Data is loaded by fixedlength position.
There is no not null restriction on the fields.
I want to have a bad file generated.
Can anyone let me know how to get the bad file?
What type of data can be modified in a file to get a bad record.
Thanks in advancehow to get the bad file?Make the field length longer than its corresponding DB field length?
I.e. when your DB field length is varchar2(10) make one of the fields in the file greater than 10. -
SQL LOADER NOT GENERATING BAD,LOG FILES
Hi
I am calling sqlloader from sql script using host command.We are using parameter file to mention about bad,log,ctl files.sql loader is running successfully all the records are inserted.but the problem is ,it is not creating log file,bad files ....Please give me suggestions.
Thanks.Hi,
As per ur saying the recodes are inserted successfully, so the bad file wont get created. And considering the log file, the path should mentioned in the CTL file and if not mentioned then the log file will created in the same area where the CTL file with the name of ctl file with extension .log instead of .ctl -
Photoshop Images on illustrator, generate bad PDF Files !
When editing a native illustrator file with linked photoshop images on layers (cuts, paths with transparent background), and we generate a PDF file from any version since 1.4, we got the cuts and /or paths marked with a stroke (line) between the image and the background.
If we generate this file on version 1.3, this problem do not appear, but the images comes completely fragmented, what makes later edition impossible.1. Please show screenshots
2. A PDF is not meant for editing. If you want to edit later, either save an AI file on top or save the PDF with Illustrator editing capabilities (this embeds a fully editable AI file into the PDF, of course making it bigger)
3. in a PDF 1.3 every transparency gets flattened which causes the fragmentation. Read the documentation on transparency, you'll need it anyway. There's a PDF called
A Designer's Guide to Transparency for Print Output
4. PDF version has to be selected carefully depending only on the demands of whoever prints or displays it afterwards. -
All of my pics and Catalog backups were on drive F: on my old computer. I bought a new computer and put drive F: in it but windows named it D: Now LR can't find the originals. I click on Find Missing and it looks like LR is working on that but I am afraid that maybe I am making things worse (LR paranoia :-) ) Please let me know how I should proceed from here.
Thanks,
DougYou can either relocate the folders in LR by right clicking on the missing highest level folder and selecting relocate folder.
Or and perhaps a better solution, permanently allocate a drive letter in windows, in this case F. To do that go to control panel,administrative tools,computer management, disk management. Then right click on the disk, select change drive letter and change the letter from D to F. -
ICal support page generating bad search?
Anyone else notice that if you do a search from the iCal support web page and have the box checked to limit the search to iCal it actually limits it to Quicktime?
click the Search Tips link and you see FAQs instead LOL!
And to add insult to injury, it comes up in a non-resizeable window (at least in Firefox). -
Path Finder in a 2D Grid Map With Different Terrain Types
I have been thinking for a while on path finding game algoritms and I can up with one idea witch I want to publish. The goal of my project is when I have a 2 dimensional grid map where squares can have different movement cost, like in Civilization II, to find the shortest way from one point in the map to another. I've used the Breathed First Search Engine. If you are not familiar to this search engine it is better to read about it first because I am not fcusing on it and I assume that you now how it works. You can read about it at the book "Practical Artificial Intelligence Programming in Java" writen by Mark Watson, witch is freely distributed at www.markwatson.com.
Actually the idea of this 2D grid path finder is to use a third dimension witch have a size equal to the highest movement cost among all terrain types. This helps solving the problem with the different movement cost of the squates. By adding this abstract third dimension it is posible to use the Breadth First Search Engine.
I this example the movementcost of a terrain type is always the same, no matter from witch square to with are you going (like in Civilization II but I haven't included roads or railroads). For example if you want to go from one square A to another square B with movement cost X (A and B are attached) you must go "up stairs" in the third dimension X - 1 times and then move to square B. But when you step on square B you are again at the lowest floor. So if you want to come back to the previous square A and it have movement cost Y first you must go floor Y and then jump in square A. And now you are again at the lowest floor at square A. When you move from one square to another you go always at the lowest floor. This is the way I handle with different movement costs.
When you find the path to the goal point it is in 3 dimensions. So you must just project it in the 2D map and that's all you have the shortest path.
I am sure this is not the best way to code this search engine but this is just the first scratch with no optimisation and so on. If I make a 100x100 randomly generated map it takes on my configuration(400Mhz Pentium II CPU with ASUS P2B MotherBoard on 100 MHz and 256 MB SD RAM on 133 MHz but because of my MB on 100MHz) around 1000 miliseconds (1000 miliseconds = 1 second) to find the shortest path from (1, 1) to (100, 100) witch is pretty good compare to the goTo function in Civilization II witch does not finds the shortest path at all and have made hundrets of gamers angry. This is amazing that nowadays there are so many games with bad path finding.
This project includes:
1. The PathFinder class witch does the jub.
2. The Map class witch has a generator for a random map in it.
3. The class TerrainType, every square on the map is based on this class.
4. The class TerrainTypes witch is the set of all terrain types used in the map.
5. The class PathFinderTest witch just test the path finder.
To test this project put all files in one directory and run PathFinderTest.java.
Map.java:
import java.util.Vector;
import java.util.Random;
//This class just creates a random map and keeps it. I will not comment on this.
class Map {
//here is kept the information about the terrain types placed in the map. Where
//every terrain type has a specific movement cost.
private int[][] terrain;
public TerrainTypes terrainTypes;
private int landMass;
private int width;
private int height;
private int highestMovementCost;
public Map(int aWidth, int aHeight) {
width = aWidth;
height = aHeight;
terrainTypes = new TerrainTypes();
highestMovementCost = terrainTypes.getHighestMovementCost();
terrain = new int[width][height];
landMass = 0;
generateRandomMap();
public void clearGoalAndStartLocFromWater(int sx, int sy, int gx, int gy) {
terrain[gx][gy] = 0;
terrain[sx][sy] = 0;
private void expandWater() {
int waterConstant = 40;
int waterExpansion = 2;
int[][] moreWater = new int[width][height];
Random randomizer = new Random();
for (int t = 0; waterExpansion > t; t++) {
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
if (i + 1 >= 0 && j >= 0 && i + 1 < width && j < height) {
if (terrain[i + 1][j] != 4) {
if (randomizer.nextInt(waterConstant) == 0)
moreWater[i + 1][j] = 1;
if (i + 1 >= 0 && j - 1 >= 0 && i + 1 < width && j - 1 < height) {
if (terrain[i + 1][j - 1] != 4) {
if (randomizer.nextInt(waterConstant) == 0)
moreWater[i + 1][j - 1] = 1;
if (i >= 0 && j - 1 >= 0 && i < width && j - 1 < height) {
if (terrain[i][j - 1] != 4) {
if (randomizer.nextInt(waterConstant) == 0)
moreWater[i][j - 1] = 1;
if (i - 1 >= 0 && j - 1 >= 0 && i - 1 < width && j - 1 < height) {
if (terrain[i - 1][j - 1] != 4) {
if (randomizer.nextInt(waterConstant) == 0)
moreWater[i - 1][j - 1] = 1;
if (i - 1 >= 0 && j >= 0 && i - 1 < width && j < height) {
if (terrain[i - 1][j] != 4) {
if (randomizer.nextInt(waterConstant) == 0)
moreWater[i - 1][j] = 1;
if (i - 1 >= 0 && j + 1 >= 0 && i - 1 < width && j + 1 < height) {
if (terrain[i - 1][j + 1] != 4) {
if (randomizer.nextInt(waterConstant) == 0)
moreWater[i - 1][j + 1] = 1;
if (i >= 0 && j + 1 >= 0 && i < width && j + 1 < height) {
if (terrain[i][j + 1] != 4) {
if (randomizer.nextInt(waterConstant) == 0)
moreWater[i][j + 1] = 1;
if (i + 1 >= 0 && j + 1 >= 0 && i + 1 < width && j + 1 < height) {
if (terrain[i + 1][j + 1] != 4) {
if (randomizer.nextInt(waterConstant) == 0)
moreWater[i + 1][j + 1] = 1;
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
if (moreWater[i][j] == 1) {
terrain[i][j] = 4;
private void generateRandomMap() {
Random randomizer = new Random();
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
if (randomizer.nextInt(3) == 1)
terrain[i][j] = 0;
else if (randomizer.nextInt(2) == 1)
terrain[i][j] = 1;
else if (randomizer.nextInt(2) == 1)
terrain[i][j] = 3;
else if (randomizer.nextInt(2) == 1)
terrain[i][j] = 2;
else if (randomizer.nextInt(2) == 1)
terrain[i][j] = 2;
else if (randomizer.nextInt(2) == 1)
terrain[i][j] = 1;
else if (randomizer.nextInt(2) == 1)
terrain[i][j] = 3;
else
terrain[i][j] = randomizer.nextInt(5);
expandWater();
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
if (terrain[i][j] != 0)
landMass++;
public int getMapHeight() {
return height;
public int getMapWidth() {
return width;
public int getSquareID(int x, int y) {
return terrain[x][y];
public int getSquareMovementCost(int x, int y) {
return terrainTypes.getMovementCost(terrain[x][y]);
}PathFinder.java:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Vector;
public class PathFinder {
private BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
//The array t3D[][] represents the 2D square map where t3D.leght = map width
//and t3D[x].lenght = map width (-1 < x < t3D.leght). The third dimension
//is refered to the square's movement cost, witch is definite by terrain.
//The fourth dimension will be with lenght = 3. When running the search engine
//(expanding the explored squares) this 3 values will keep the position of
//the previous square in 3 dimension, witch are width, height and the maximum
//movement cost among all squares.
private int[][][][] squares3DReference;
//Keeps information witch squares are visited.
private boolean[][][] visitedSquares;
private Map map;
//this is the queue used in the Breathed First Seatch.
private Vector queue3D;
//Here is saved the shortest path
private Vector path2D;
private int highestMovementCost;
public PathFinder(Map aMap) {
map = aMap;
queue3D = new Vector();
path2D = new Vector();
squares3DReference = new int[map.getMapWidth()][map.getMapHeight()][][];
visitedSquares = new boolean[map.getMapWidth()][map.getMapHeight()][];
highestMovementCost = map.terrainTypes.getHighestMovementCost();
buildAbstract3DTerrain();
private void buildAbstract3DTerrain() {
for (int x = 0; x < map.getMapWidth(); x++) {
for (int y = 0; y <map.getMapHeight(); y++) {
int movementCost = map.terrainTypes.getMovementCost(map.getSquareID(x, y));
if ( movementCost > 0) {
visitedSquares[x][y] = new boolean[highestMovementCost];
squares3DReference[x][y] = new int[highestMovementCost][3];
for (int z = 0; z < highestMovementCost; z++) {
for (int t = 0; t < 3; t++) {
squares3DReference[x][y][z][t] = -1;
private boolean isMoveValid(int x, int y, int z, int x2, int y2, int z2) {
if ( x < 0 || y < 0 || z < 0 || x2 < 0 || y2 < 0 || z2 < 0 || x >= map.getMapWidth() || y >= map.getMapHeight() || z >= highestMovementCost || x2 >= map.getMapWidth() || y2 >= map.getMapHeight() || z2 >= highestMovementCost)
return false;
if (map.terrainTypes.getMovementCost(map.getSquareID(x2, y2)) < 1)
return false;
if (visitedSquares[x2][y2][z2])
return false;
if (x == x2 && y == y2)
return true;
else {
if (z == map.terrainTypes.getMovementCost(map.getSquareID(x2, y2)) - 1)
return true;
else
return false;
private void clearPreviousSearchData() {
queue3D.clear();
path2D.clear();
for (int x = 0; x < map.getMapWidth(); x++) {
for (int y = 0; y < map.getMapHeight(); y++) {
if (squares3DReference[x][y] != null) {
for (int z = 0; z < highestMovementCost; z++) {
visitedSquares[x][y][z] = false;
for (int t = 0; t < 3; t++) {
squares3DReference[x][y][z][t] = -1;
private Vector copyPath2D() {
Vector path = new Vector();
for (int i = 0; i < path2D.size(); i++) {
path.add(path2D.get(i));
return path;
public Vector findPath(int sX, int sY, int gX, int gY) {
int head = 0;
int tail = 0;
int x = sX;
int y = sY;
int z = 0;
visitedSquares[x][y][z] = true;
mainLoop: {
while (tail <= head) {
int[][] moves = getPosibleMoves(x, y, z);
for (int i = 0; i < 9; i++) {
if (moves[i] != null) {
squares3DReference[moves[0]][moves[i][1]][moves[i][2]][0] = x;
squares3DReference[moves[i][0]][moves[i][1]][moves[i][2]][1] = y;
squares3DReference[moves[i][0]][moves[i][1]][moves[i][2]][2] = z;
queue3D.add(moves[i]);
if (moves[i][0] == gX && moves[i][1] == gY) {
break mainLoop;
visitedSquares[moves[i][0]][moves[i][1]][moves[i][2]] = true;
head++;
if (queue3D.size() == 0 || queue3D.size() == tail)
break mainLoop;
int[] nextInQueue = ((int[]) queue3D.get(tail));
x = nextInQueue[0];
y = nextInQueue[1];
z = nextInQueue[2];
tail++;
if (squares3DReference[gX][gY][0][0] == -1) {
clearPreviousSearchData();
return path2D;
fillpath2D(sX, sY, gX, gY);
Vector path = copyPath2D();
clearPreviousSearchData();
return path;
private int[][] getPosibleMoves(int x, int y, int z) {
int[][] moves = new int[9][3];
if (isMoveValid(x, y, z, x + 1, y, 0)) {
moves[0][0] = x + 1;
moves[0][1] = y;
moves[0][2] = 0;
else
moves[0] = null;
if (isMoveValid(x, y, z, x + 1, y - 1, 0)) {
moves[1][0] = x + 1;
moves[1][1] = y - 1;
moves[1][2] = 0;
else
moves[1] = null;
if (isMoveValid(x, y, z, x, y - 1, 0)) {
moves[2][0] = x;
moves[2][1] = y - 1;
moves[2][2] = 0;
else
moves[2] = null;
if (isMoveValid(x, y, z, x - 1, y - 1, 0)) {
moves[3][0] = x - 1;
moves[3][1] = y - 1;
moves[3][2] = 0;
else
moves[3] = null;
if (isMoveValid(x, y, z, x - 1, y, 0)) {
moves[4][0] = x - 1;
moves[4][1] = y;
moves[4][2] = 0;
else
moves[4] = null;
if (isMoveValid(x, y, z, x - 1, y + 1, 0)) {
moves[5][0] = x - 1;
moves[5][1] = y + 1;
moves[5][2] = 0;
else
moves[5] = null;
if (isMoveValid(x, y, z, x, y + 1, 0)) {
moves[6][0] = x;
moves[6][1] = y + 1;
moves[6][2] = 0;
else
moves[6] = null;
if (isMoveValid(x, y, z, x + 1, y + 1, 0)) {
moves[7][0] = x + 1;
moves[7][1] = y + 1;
moves[7][2] = 0;
else
moves[7] = null;
if (isMoveValid(x, y, z, x, y, z + 1)) {
moves[8][0] = x;
moves[8][1] = y;
moves[8][2] = z + 1;
else
moves[8] = null;
return moves;
private void fillpath2D(int sX, int sY, int gX, int gY) {
int[] gLoc = {gX, gY};
path2D.add(gLoc);
int x = gX;
int y = gY;
int z = 0;
while (x != sX || y != sY) {
int x2 = squares3DReference[x][y][z][0];
int y2 = squares3DReference[x][y][z][1];
int z2 = squares3DReference[x][y][z][2];
x = x2;
y = y2;
z = z2;
if (z == 0) {
int[] loc = {x, y};
path2D.insertElementAt(loc, 0);
PathFinderTest.java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Vector;
public class PathFinderTest {
static BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
static Map map;
static int startX;
static int startY;
static int goalX;
static int goalY;
public static void main(String[] args) throws Exception {
System.out.print("Enter map size.\nx = ");
int width = Integer.parseInt(consoleReader.readLine());
System.out.print("y = ");
int height = Integer.parseInt(consoleReader.readLine());
System.out.print("Enter strting location.\nx = ");
startX = Integer.parseInt(consoleReader.readLine()) - 1;
System.out.print("y = ");
startY = Integer.parseInt(consoleReader.readLine()) - 1;
System.out.print("Enter goal location.\nx = ");
goalX = Integer.parseInt(consoleReader.readLine()) - 1;
System.out.print("y = ");
goalY = Integer.parseInt(consoleReader.readLine()) - 1;
if (goalX < 0 || goalY < 0 || startX < 0 || startY < 0 || goalX >= width || goalY >= height || startX >= width || startY >= height) {
System.out.println("Invalid parameters found. Program will exit");
System.exit(0);
map = new Map(width, height);
map.clearGoalAndStartLocFromWater(startX, startY, goalX, goalY);
printSolution(new Vector());
PathFinder pathFinder = new PathFinder(map);
long before = System.currentTimeMillis();
Vector path = pathFinder.findPath(startX, startY, goalX, goalY);
long after = System.currentTimeMillis();
long time = after - before;
printSolution(path);
if (path.size() == 0)
System.out.println("No path found.");
else
System.out.println("Path found.");
System.out.println("Finding the path took " + time + " milliseconds");
static void printSolution(Vector path) {
boolean[][] pathOnMap = new boolean[map.getMapWidth()][map.getMapHeight()];
for (int i = 0; path.size() > i; i++) {
int[] move = (int[]) path.get(i);
pathOnMap[move[0]][move[1]] = true;
for (int y = 0; y < map.getMapHeight(); y++) {
for (int x = 0; x < map.getMapWidth(); x++) {
System.out.print(" ");
if (pathOnMap[x][y] == false)
System.out.print(" ");
else
System.out.print("0");
if (x == startX && y == startY)
System.out.print("S");
else if (x == goalX && y == goalY)
System.out.print("G");
else
System.out.print(map.terrainTypes.getNameFirstLetter(map.getSquareID(x, y)));
System.out.println();
System.out.println();
}TerrainType.java:
public class TerrainType {
private int movementCost;
private String name;
TerrainType(int aMovementCost, String aName) {
movementCost = aMovementCost;
name = aName;
public int getMovementCost() {
return movementCost;
public String getName() {
return name;
public String getNameFirstLetter() {
return name.substring(0, 1).toUpperCase();
}TerrainTypes.java:
import java.util.Vector;
public class TerrainTypes {
//Here are saved the terrain types with the map has. ElementAt 'i' in
//setOfTypes is represented by the number in Map.terrain[x][y] witch is
//equal to i, were x, y are random integer as soon as they do not
//throw ArrayIndexOutOfBoundsException. Actually this is a coding to know
//a specific square in the map to witch terrain type is refered in setOfTypes.
private Vector setOfTypes;
public TerrainTypes() {
setOfTypes = new Vector();
setOfTypes.add(new TerrainType(1, "Plains"));
setOfTypes.add(new TerrainType(2, "Forst"));
setOfTypes.add(new TerrainType(3, "Jungle"));
setOfTypes.add(new TerrainType(4, "Mountain"));
setOfTypes.add(new TerrainType(-1, "X"));
public int getMovementCost(int i) {
return ((TerrainType) setOfTypes.get(i)).getMovementCost();
public String getName(int i) {
return ((TerrainType) setOfTypes.get(i)).getName();
public String getNameFirstLetter(int i) {
return ((TerrainType) setOfTypes.get(i)).getNameFirstLetter();
public int getHighestMovementCost() {
int max = 1;
for (int i = 0; setOfTypes.size() > i; i++) {
int movementCost = ((TerrainType) setOfTypes.get(i)).getMovementCost();
if ( movementCost > 0) {
if (max < movementCost)
max = movementCost;
return max;
}I hope this program will be helpful.
SogartarWhy is such a smart guy like you not using A*
It is a general known algorithm which will find the
optimal solution in a finite search-space (within a minimal time).
The calculation time for the A* algorithm is influenced by two parameters:
1 - cumulative cost
2 - minimal expected additional cost
The calculation of these two costs has a great influence on the
solution.
I think the actual problems most games experience with shortest path calculatoin are
1 - very little time to spent calculating the shortest path
The quickest solution might be the best for the game
If your solution takes 1 second for the calculation of a path for one element on the board (100x100)
What would it take for the game to calculate the path for all elements controlled by the computer ??
If the computer controls two players which each have 50 elements to control, it would take forever...
Don't even consider the usage of a larger board (200x200 would take 4 seconds/element when
algorithm has complexity O(n))
2 - low priority.
Users tend to forgive a bad shortest path-algorithm most of the time,
but not a bad display, bad pictures,...
This is why most shortest-path algorithms within games were
developed as a depth first search,
within some earlier games this was even developed as
a rule which went straight to the endlocation and
takes a right/left turn when blocked by water/wall/...
So the actual steps you should take are:
1 - develop a normal breath-first search (to get going)
2 - develop a normal depth-first search (to compare speed and solution with)
3 - develop a normal dijkstra algorithm (sometimes called A)
4 - develop a best first algorithm (called A*)
5 - develop other AI-algorithms building upon A* (tabu-search, limited memory A*,...)
6 - develop some other AI-algorithms (Genetic Algorithms, Simulated Annealing,...)
7 - compare and tweak/change all search-algorithms for
7 - a - size of maps (small versus huge)
7 - b - optimality of the solution
7 - c - actual usage for your game
8 - !!! very important !!!
Share the developed path algorithms along with remarks about speed, map-size,...
with the rest of us. I would be very interested in such library.
kind regards, -
Web app security exception: Bad URLMatchMap
Can anyone help me diagnose an error? I am simply trying to place a security constraint
on a servlet within an ear-deployed web-application.
The exception occurs as the first POST comes to the servlet I am trying to protect:
<Apr 16, 2001 12:40:09 PM EDT> <Error> <Kernel> <ExecuteRequest failed
java.lang.IllegalArgumentException: bad URLMatchMap path: 'version="1.0"'
at weblogic.servlet.utils.URLMatchMap.get(URLMatchMap.java:196)
at weblogic.servlet.security.internal.WebAppSecurity.getConstraint(WebAp
pSecurity.java:135)
at weblogic.servlet.security.internal.SecurityModule.checkTransport(Secu
rityModule.java:177)
at weblogic.servlet.security.internal.BasicSecurityModule.checkA(BasicSe
curityModule.java:48)
at weblogic.servlet.security.internal.ServletSecurityManager.checkAccess
(ServletSecurityManager.java:150)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:1250)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:1622)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>
<?xml version="1.0" ?>
<!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN'
'http://java.sun.com/j2ee/dtds/web-app_2.2.dtd'>
<web-app>
<display-name>ANSWeb</display-name>
<description>no description</description>
<servlet>
<servlet-name>UPMessageServlet</servlet-name>
<display-name>UPMessageServlet</display-name>
<description>no description</description>
<servlet-class>com.aether.ans.gateway.up.UPMessageServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>ANSServlet</servlet-name>
<display-name>ANSServlet</display-name>
<description>no description</description>
<servlet-class>com.aether.ans.server.ANSServlet</servlet-class>
<load-on-startup />
</servlet>
<servlet>
<servlet-name>WCTPServlet</servlet-name>
<display-name>WCTPServlet</display-name>
<description>no description</description>
<servlet-class>com.aether.ans.gateway.wctp.WCTPServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UPMessageServlet</servlet-name>
<url-pattern>/UPMessage</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ANSServlet</servlet-name>
<url-pattern>/Server</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>WCTPServlet</servlet-name>
<url-pattern>/WCTPCallback</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<resource-ref>
<description>no description</description>
<res-ref-name>url/ANS.dtd</res-ref-name>
<res-type>java.net.URL</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Server</web-resource-name>
<url-pattern>/Server</url-pattern>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>Client</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
<security-role>
<role-name>Client</role-name>
</security-role>
<ejb-ref>
<description>no description</description>
<ejb-ref-name>ejb/ANSServer</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>com.aether.ans.server.ANSServerHome</home>
<remote>com.aether.ans.server.ANSServer</remote>
</ejb-ref>
<ejb-ref>
<description>no description</description>
<ejb-ref-name>ejb/Alert</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<home>com.aether.ans.entity.AlertHome</home>
<remote>com.aether.ans.entity.Alert</remote>
</ejb-ref>
</web-app>
<?xml version="1.0" ?>
<!DOCTYPE weblogic-web-app PUBLIC '-//BEA Systems, Inc.//DTD Web Application 6.0//EN'
'http://www.beasys.com/servers/wls600/dtd/weblogic-web-jar.dtd'>
<weblogic-web-app>
<description>no description</description>
<security-role-assignment>
<role-name>Client</role-name>
<principal-name>Client</principal-name>
</security-role-assignment>
<reference-descriptor>
<resource-description>
<res-ref-name>url/ANS.dtd</res-ref-name>
<jndi-name>ans.url.dtd</jndi-name>
</resource-description>
<ejb-reference-description>
<ejb-ref-name>ejb/Alert</ejb-ref-name>
<jndi-name>ejb.Alert</jndi-name>
</ejb-reference-description>
<ejb-reference-description>
<ejb-ref-name>ejb/ANSServer</ejb-ref-name>
<jndi-name>ejb.ANSServer</jndi-name>
</ejb-reference-description>
</reference-descriptor>
</weblogic-web-app>Hi Andrew,
Even without moderation enabled, any submission made through the BC platform is filtered through our protection engine to prevent XSS. Any type of potentially malicious code is immediately stripped from the submission, and this is not done at a client-side level.
Kind Regards,
Alex -
Bad file is not created during the external table creation.
Hello Experts,
I have created a script for external table in Oracle 10g DB. Everything is working fine except it does not create the bad file, But it creates the log file. I Cann't figure out what is the issue. Because my shell scripts is failing and the entire program is failing. I am attaching the table creation script and the shell script where it is refering and the error. Kindly let me know if something is missing. Thanks in advance
Table Creation Scripts:_-------------------------------
create table RGIS_TCA_DATA_EXT
guid VARCHAR2(250),
badge VARCHAR2(250),
scheduled_store_id VARCHAR2(250),
parent_event_id VARCHAR2(250),
event_id VARCHAR2(250),
organization_number VARCHAR2(250),
customer_number VARCHAR2(250),
store_number VARCHAR2(250),
inventory_date VARCHAR2(250),
full_name VARCHAR2(250),
punch_type VARCHAR2(250),
punch_start_date_time VARCHAR2(250),
punch_end_date_time VARCHAR2(250),
event_meet_site_id VARCHAR2(250),
vehicle_number VARCHAR2(250),
vehicle_description VARCHAR2(250),
vehicle_type VARCHAR2(250),
is_owner VARCHAR2(250),
driver_passenger VARCHAR2(250),
mileage VARCHAR2(250),
adder_code VARCHAR2(250),
bonus_qualifier_code VARCHAR2(250),
store_accuracy VARCHAR2(250),
store_length VARCHAR2(250),
badge_input_type VARCHAR2(250),
source VARCHAR2(250),
created_by VARCHAR2(250),
created_date_time VARCHAR2(250),
updated_by VARCHAR2(250),
updated_date_time VARCHAR2(250),
approver_badge_id VARCHAR2(250),
approver_name VARCHAR2(250),
orig_guid VARCHAR2(250),
edit_type VARCHAR2(250)
organization external
type ORACLE_LOADER
default directory ETIME_LOAD_DIR
access parameters
RECORDS DELIMITED BY NEWLINE
BADFILE ETIME_LOAD_DIR:'tstlms.bad'
LOGFILE ETIME_LOAD_DIR:'tstlms.log'
READSIZE 1048576
FIELDS TERMINATED BY '|'
MISSING FIELD VALUES ARE NULL(
GUID
,BADGE
,SCHEDULED_STORE_ID
,PARENT_EVENT_ID
,EVENT_ID
,ORGANIZATION_NUMBER
,CUSTOMER_NUMBER
,STORE_NUMBER
,INVENTORY_DATE char date_format date mask "YYYYMMDD HH24:MI:SS"
,FULL_NAME
,PUNCH_TYPE
,PUNCH_START_DATE_TIME char date_format date mask "YYYYMMDD HH24:MI:SS"
,PUNCH_END_DATE_TIME char date_format date mask "YYYYMMDD HH24:MI:SS"
,EVENT_MEET_SITE_ID
,VEHICLE_NUMBER
,VEHICLE_DESCRIPTION
,VEHICLE_TYPE
,IS_OWNER
,DRIVER_PASSENGER
,MILEAGE
,ADDER_CODE
,BONUS_QUALIFIER_CODE
,STORE_ACCURACY
,STORE_LENGTH
,BADGE_INPUT_TYPE
,SOURCE
,CREATED_BY
,CREATED_DATE_TIME char date_format date mask "YYYYMMDD HH24:MI:SS"
,UPDATED_BY
,UPDATED_DATE_TIME char date_format date mask "YYYYMMDD HH24:MI:SS"
,APPROVER_BADGE_ID
,APPROVER_NAME
,ORIG_GUID
,EDIT_TYPE
location (ETIME_LOAD_DIR:'tstlms.dat')
reject limit UNLIMITED;
_***Shell Script*:*----------------_*
version=1.0
umask 000
DATE=`date +%Y%m%d%H%M%S`
TIME=`date +"%H%M%S"`
SOURCE=`hostname`
fcp_login=`echo $1|awk '{print $3}'|sed 's/"//g'|awk -F= '{print $2}'`
fcp_reqid=`echo $1|awk '{print $2}'|sed 's/"//g'|awk -F= '{print $2}'`
TXT1_PATH=/home/ac1/oracle/in/tsdata
TXT2_PATH=/home/ac2/oracle/in/tsdata
ARCH1_PATH=/home/ac1/oracle/in/tsdata
ARCH2_PATH=/home/ac2/oracle/in/tsdata
DEST_PATH=/home/custom/sched/in
PROGLOG=/home/custom/sched/logs/rgis_tca_to_tlms_create.sh.log
PROGNAME=`basename $0`
PROGPATH=/home/custom/sched/scripts
cd $TXT2_PATH
FILELIST2="`ls -lrt tstlmsedits*.dat |awk '{print $9}'`"
NO_OF_FILES2="`ls -lrt tstlmsedits*.dat |awk '{print $9}'|wc -l`"
$DEST_PATH/tstlmsedits.dat for i in $FILELIST2
do
cat $i >> $DEST_PATH/tstlmsedits.dat
printf "\n" >> $DEST_PATH/tstlmsedits.dat
mv $i $i.$DATE
#mv $i $TXT2_PATH/test/.
mv $i.$DATE $TXT2_PATH/test/.
done
if test $NO_OF_FILES2 -eq 0
then
echo " no tstlmsedits.dat file exists " >> $PROGLOG
else
echo "created dat file tstlmsedits.dat at $DATE" >> $PROGLOG
echo "-------------------------------------------" >> $PROGLOG
fi
NO_OF_FILES1="`ls -lrt tstlms*.dat |awk '{print $9}'|wc -l`"
FILELIST1="`ls -lrt tstlms*.dat |awk '{print $9}'`"
$DEST_PATH/tstlms.datfor i in $FILELIST1
do
cat $i >> $DEST_PATH/tstlms.dat
printf "\n" >> $DEST_PATH/tstlms.dat
mv $i $i.$DATE
# mv $i $TXT2_PATH/test/.
mv $i.$DATE $TXT2_PATH/test/.
done
if test $NO_OF_FILES1 -eq 0
then
echo " no tstlms.dat file exists " >> $PROGLOG
else
echo "created dat file tstlms.dat at $DATE" >> $PROGLOG
fi
cd $TXT1_PATH
FILELIST3="`ls -lrt tstlmsedits*.dat |awk '{print $9}'`"
NO_OF_FILES3="`ls -lrt tstlmsedits*.dat |awk '{print $9}'|wc -l`"
$DEST_PATH/tstlmsedits.datfor i in $FILELIST3
do
cat $i >> $DEST_PATH/tstlmsedits.dat
printf "\n" >> $DEST_PATH/tstlmsedits.dat
mv $i $i.$DATE
#mv $i $TXT1_PATH/test/.
mv $i.$DATE $TXT1_PATH/test/.
done
if test $NO_OF_FILES3 -eq 0
then
echo " no tstlmsedits.dat file exists " >> $PROGLOG
else
echo "created dat file tstlmsedits.dat at $DATE" >> $PROGLOG
echo "-------------------------------------------" >> $PROGLOG
fi
NO_OF_FILES4="`ls -lrt tstlms*.dat |awk '{print $9}'|wc -l`"
FILELIST4="`ls -lrt tstlms*.dat |awk '{print $9}'`"
$DEST_PATH/tstlms.datfor i in $FILELIST4
do
cat $i >> $DEST_PATH/tstlms.dat
printf "\n" >> $DEST_PATH/tstlms.dat
mv $i $i.$DATE
# mv $i $TXT1_PATH/test/.
mv $i.$DATE $TXT1_PATH/test/.
done
if test $NO_OF_FILES4 -eq 0
then
echo " no tstlms.dat file exists " >> $PROGLOG
else
echo "created dat file tstlms.dat at $DATE" >> $PROGLOG
fi
#connecting to oracle to generate bad files
sqlplus -s $fcp_login<<EOF
select count(*) from rgis_tca_data_ext;
select count(*) from rgis_tca_data_history_ext;
exit;
EOF
#counting the records in files
tot_rec_in_tstlms=`wc -l $DEST_PATH/tstlms.dat | awk ' { print $1 } '`
tot_rec_in_tstlmsedits=`wc -l $DEST_PATH/tstlmsedits.dat | awk ' { print $1 } '`
tot_rec_in_tstlms_bad=`wc -l $DEST_PATH/tstlms.bad | awk ' { print $1 } '`
tot_rec_in_tstlmsedits_bad=`wc -l $DEST_PATH/tstlmsedits.bad | awk ' { print $1 } '`
#updating log table
echo "pl/sql block started"
sqlplus -s $fcp_login<<EOF
define tot_rec_in_tstlms = '$tot_rec_in_tstlms';
define tot_rec_in_tstlmsedits = '$tot_rec_in_tstlmsedits';
define tot_rec_in_tstlms_bad = '$tot_rec_in_tstlms_bad';
define tot_rec_in_tstlmsedits_bad='$tot_rec_in_tstlmsedits_bad';
define fcp_reqid ='$fcp_reqid';
declare
l_tstlms_file_id number := null;
l_tstlmsedits_file_id number := null;
l_tot_rec_in_tstlms number := 0;
l_tot_rec_in_tstlmsedits number := 0;
l_tot_rec_in_tstlms_bad number := 0;
l_tot_rec_in_tstlmsedits_bad number := 0;
l_request_id fnd_concurrent_requests.request_id%type;
l_start_date fnd_concurrent_requests.actual_start_date%type;
l_end_date fnd_concurrent_requests.actual_completion_date%type;
l_conc_prog_name fnd_concurrent_programs.concurrent_program_name%type;
l_requested_by fnd_concurrent_requests.requested_by%type;
l_requested_date fnd_concurrent_requests.request_date%type;
begin
--getting concurrent request details
begin
SELECT fcp.concurrent_program_name,
fcr.request_id,
fcr.actual_start_date,
fcr.actual_completion_date,
fcr.requested_by,
fcr.request_date
INTO l_conc_prog_name,
l_request_id,
l_start_date,
l_end_date,
l_requested_by,
l_requested_date
FROM fnd_concurrent_requests fcr, fnd_concurrent_programs fcp
WHERE fcp.concurrent_program_id = fcr.concurrent_program_id
AND fcr.request_id = &fcp_reqid; --fnd_global.conc_request_id();
exception
when no_data_found then
fnd_file.put_line(fnd_file.log, 'Error:RGIS_TCA_TO_TLMS_CREATE.sh');
fnd_file.put_line(fnd_file.log, 'No data found for request_id');
fnd_file.put_line(fnd_file.log, sqlerrm);
raise_application_error(-20001,
'Error occured when executing RGIS_TCA_TO_TLMS_CREATE.sh ' ||
sqlerrm);
when others then
fnd_file.put_line(fnd_file.log, 'Error:RGIS_TCA_TO_TLMS_CREATE.sh');
fnd_file.put_line(fnd_file.log,
'Error occured when retrieving request_id request_id');
fnd_file.put_line(fnd_file.log, sqlerrm);
raise_application_error(-20001,
'Error occured when executing RGIS_TCA_TO_TLMS_CREATE.sh ' ||
sqlerrm);
end;
--calling ins_or_upd_tca_process_log to update log table for tstlms.dat file
begin
rgis_tca_to_tlms_process.ins_or_upd_tca_process_log
(l_tstlms_file_id,
'tstlms.dat',
l_conc_prog_name,
l_request_id,
l_start_date,
l_end_date,
&tot_rec_in_tstlms,
&tot_rec_in_tstlms_bad,
null,
null,
null,
null,
null,
null,
null,
l_requested_by,
l_requested_date,
null,
null,
null,
null,
null);
exception
when others then
fnd_file.put_line(fnd_file.log, 'Error:RGIS_TCA_TO_TLMS_CREATE.sh');
fnd_file.put_line(fnd_file.log,
'Error occured when executing rgis_tca_to_tlms_process.ins_or_upd_tca_process_log for tstlms file');
fnd_file.put_line(fnd_file.log, sqlerrm);
end;
--calling ins_or_upd_tca_process_log to update log table for tstlmsedits.dat file
begin
rgis_tca_to_tlms_process.ins_or_upd_tca_process_log
(l_tstlmsedits_file_id,
'tstlmsedits.dat',
l_conc_prog_name,
l_request_id,
l_start_date,
l_end_date,
&tot_rec_in_tstlmsedits,
&tot_rec_in_tstlmsedits_bad,
null,
null,
null,
null,
null,
null,
null,
l_requested_by,
l_requested_date,
null,
null,
null,
null,
null);
exception
when others then
fnd_file.put_line(fnd_file.log, 'Error:RGIS_TCA_TO_TLMS_CREATE.sh');
fnd_file.put_line(fnd_file.log,
'Error occured when executing rgis_tca_to_tlms_process.ins_or_upd_tca_process_log for tstlmsedits file');
fnd_file.put_line(fnd_file.log, sqlerrm);
end;
end;
exit;
EOF
echo "rgis_tca_to_tlms_process.sql started"
sqlplus -s $fcp_login @$SCHED_TOP/sql/rgis_tca_to_tlms_process.sql $fcp_reqid
exit;
echo "rgis_tca_to_tlms_process.sql ended"
_**Error:*----------------------------------*_
RGIS Scheduling: Version : UNKNOWN
Copyright (c) 1979, 1999, Oracle Corporation. All rights reserved.
TCATLMS module: TCA To TLMS Import Process
Current system time is 18-AUG-2011 06:13:27
COUNT(*)
16
COUNT(*)
25
wc: cannot open /home/custom/sched/in/tstlms.bad
wc: cannot open /home/custom/sched/in/tstlmsedits.bad
pl/sql block started
old 33: AND fcr.request_id = &fcp_reqid; --fnd_global.conc_request_id();
new 33: AND fcr.request_id = 18661823; --fnd_global.conc_request_id();
old 63: &tot_rec_in_tstlms,
new 63: 16,
old 64: &tot_rec_in_tstlms_bad,
new 64: ,
old 97: &tot_rec_in_tstlmsedits,
new 97: 25,
old 98: &tot_rec_in_tstlmsedits_bad,
new 98: ,
ERROR at line 64:
ORA-06550: line 64, column 4:
PLS-00103: Encountered the symbol "," when expecting one of the following:
( - + case mod new not null others <an identifier>
<a double-quoted delimited-identifier> <a bind variable> avg
count current exists max min prior sql stddev sum variance
execute forall merge time timestamp interval date
<a string literal with character set specification>
<a number> <a single-quoted SQL string> pipe
<an alternatively-quoted string literal with character set specification>
<an alternatively-q
ORA-06550: line 98, column 4:
PLS-00103: Encountered the symbol "," when expecting one of the following:
( - + case mod new not null others <an identifier>
<a double-quoted delimited-identifier> <a bind variable> avg
count current exists max min prior sql st
rgis_tca_to_tlms_process.sql started
old 12: and concurrent_request_id = '&1';
new 12: and concurrent_request_id = '18661823';
old 18: and concurrent_request_id = '&1';
new 18: and concurrent_request_id = '18661823';
old 22: rgis_tca_to_tlms_process.run_tca_data(l_tstlms_file_id,&1);
new 22: rgis_tca_to_tlms_process.run_tca_data(l_tstlms_file_id,18661823);
old 33: rgis_tca_to_tlms_process.run_tca_data_history(l_tstlmsedits_file_id,&1);
new 33: rgis_tca_to_tlms_process.run_tca_data_history(l_tstlmsedits_file_id,18661823);
old 44: rgis_tca_to_tlms_process.send_tca_email('TCATLMS',&1);
new 44: rgis_tca_to_tlms_process.send_tca_email('TCATLMS',18661823);
declare
ERROR at line 1:
ORA-20001: Error occured when executing RGIS_TCA_TO_TLMS_PROCESS.sql ORA-01403:
no data found
ORA-06512: at line 59
Executing request completion options...
------------- 1) PRINT -------------
Printing output file.
Request ID : 18661823
Number of copies : 0
Printer : noprint
Finished executing request completion options.
Concurrent request completed successfully
Current system time is 18-AUG-2011 06:13:29
---------------------------------------------------------------------------Hi,
Check the status of the batch in SM35 transaction.
if the batch is locked by mistake or any other error, now you can release it and aslo you can process again.
To Release -Shift+F4.
Also you can analyse the job status through F2 button.
Bye -
Dynamic Configuration - Set Directory Path for File Receiver Adapter
Hi Experts,
I have a question regarding the dynamic configuration for the file adapter. Is it possible to set a directory path without a message mapping for the file receiver adapter? the problem is that I want to import a pdf document. this pdf document I want to store in a dynamic directory (depending on the filename). so I have to read the filename out of the dynamic configuration and generate (depending on the filename) a directory for this file. Is that possible without a message mapping? I cannot make a message mapping because the file has the pdf format and should not get changed.
best regards
Christopher KühnHi Gaurav,
I use the ASMA (respectively the filename) for the sender adapter. After the pdf was imported into XI this filename is in the ASMA.
But what then??? How can I get this filename with the help of the variable substitution? and if I have this filename I have to change this filename a bit to generate the name / path of the directory.
Please explain it to me detailled
Thanks and regards
christopher -
Web service ClassCastException in the generated Tie class
I got the above exception when making a request from a client to an EJB webservice. The exception is in the generated tie class on the server side.
I narrowed down the problem to this:
In my function call in the tie class: (now call MyFunction):
a function in the tie class is generated:
private void invoke_MyFunction(StreamingHandlerState streaminghandlerstate) throws Exception{
In this function, there's line:
((MyEJBInterfaceClass)getTarget()).MyFunction(...)
Where MyEJBInterfaceClass is the name of the remote interface, which has MyFunction declaration in it.
the getTarget() function is from TieBase class that the MyEJBInterfaceClass_Tie extended.
The error is generated because getTarget() did not return an instance of MyEJBInterfaceClass.
So, there must be some error in the generated code when I use the deploy tool to deploy my webservice.
Could someone please shed some light?
Sun, please fix your bugs. There are so many bugs that I found when using your server (App Server 8).
From not releasing the context resource properly to not lookup properly using the context, to randomly generate bad client.jar file to this error.
Very disappointed.Hello again
I tried to reproduce your problem and could not so there must be something different than the following steps :
1. Create the interface MyIntf.java
package ejb;
public interface MyIntf extends java.rmi.Remote {
public String sayHello(String toWho)
throws java.rmi.RemoteException;
2. Create the EJB impl
package ejb;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import java.rmi.RemoteException;
public class MyEjb implements MyIntf, SessionBean {
SessionContext sc = null;
public MyEjb() { }
public void ejbCreate() throws RemoteException {
System.out.println("In MyEjb::ejbCreate !!");
public void setSessionContext(SessionContext sc) {
this.sc = sc;
public void ejbRemove() throws RemoteException {}
public void ejbActivate() {}
public void ejbPassivate() {}
public String sayHello(String toWho) {
return "hello " + toWho;
3. Create the config.xml (slightly modified from yours)
<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
<service
name="MyEjbIntfService"
targetNamespace="http://java.sun.com"
typeNamespace="http://java.sun.com"
packageName="ejb">
<interface name="ejb.MyIntf"/>
</service>
</configuration>
4. Invoke wscompile
javac -d build ejb/MyEjb.java
wscompile -define -mapping build/mapping.xml -d build -nd build -classpath build config.xml
5. look at wsdl, there is nothing line MyIntfSoapPort like you had
in particular
<portType name="MyIntf">
complete wsdl is :
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="MyEjbIntfService" targetNamespace="http://java.sun.com" xmlns:tns="http://java.sun.com" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<types/>
<message name="MyIntf_sayHello">
<part name="String_1" type="xsd:string"/></message>
<message name="MyIntf_sayHelloResponse">
<part name="result" type="xsd:string"/></message>
<portType name="MyIntf">
<operation name="sayHello" parameterOrder="String_1">
<input message="tns:MyIntf_sayHello"/>
<output message="tns:MyIntf_sayHelloResponse"/></operation></portType>
<binding name="MyIntfBinding" type="tns:MyIntf">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/> <operation name="sayHello">
<soap:operation soapAction=""/>
<input>
<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://java.sun.com"/></input>
<output>
<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://java.sun.com"/></output></operation></binding>
<service name="MyEjbIntfService">
<port name="MyIntfPort" binding="tns:MyIntfBinding">
<soap:address location="REPLACE_WITH_ACTUAL_URL"/></port></service></definitions>
6. Package in deploytool.
this is the webservices I got from the assembly tool.
<webservices xmlns="http://java.sun.com/xml/ns/j2ee" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd">
<webservice-description>
<display-name>MyEjbIntfService</display-name>
<webservice-description-name>MyEjbIntfService</webservice-description-name>
<wsdl-file>META-INF/wsdl/MyEjbIntfService.wsdl</wsdl-file>
<jaxrpc-mapping-file>mapping.xml</jaxrpc-mapping-file>
<port-component>
<display-name>MyIntf</display-name>
<port-component-name>MyIntf</port-component-name>
<wsdl-port xmlns:wsdl-port_ns__="http://java.sun.com">wsdl-port_ns__:MyIntfPort</wsdl-port>
<service-endpoint-interface>ejb.MyIntf</service-endpoint-interface>
<service-impl-bean>
<ejb-link>MyEjb</ejb-link>
</service-impl-bean>
</port-component>
</webservice-description>
</webservices>
So It works fine AFAIK, from your descriptrion, it seems that the wsdl file is incorrect so the problem starts far before the actual Tie generation. You wrote in a previous message that :
"In the wsdl file this is one of the places it shows: <portType name="MyEjbIntfSoap">"
This is where the problem is. Do you have any clue how you got that ? If you run again wscompile, do you have the same values ?
Jerome
Maybe you are looking for
-
I can not install Oracle 8i 1.6 Client for NT on an Intel pentium 4 Machine
Hi all, I've heard the java virtual m installed during the installation of oracle client manager 8i 1.6 on a Intel Pentium IV is bugy till now we could n't bring it to runn. Is there anyone who has the uptodate Patch or work around for that problem?
-
Problem with adobe reader when installing on mac book. "Internal error occured".
Both me and my friend installed Adobe reader on our mac books this week, and it doesn't work. The only thing that happens when we try to open the program is an text message with "Internal error occured". And that's it. The PDF-file is not the problem
-
Hi frenz, I got the following error when I tried to edit the user A29666. Account 'A29666' not found in Resource 'SecurID - usatli69'. XPRESS exception: Can't call method listResourceObjects on class com.waveset.ui.FormUtil ==> com.waveset.util.Waves
-
Hi, can I write a java program (.class file) working with swing and called by jsp page (.jsp)
-
Help! Safari crashing when using finder to download/upload
Any time I try to do anything which involves Finder popping up such as uploading photos to Facebook, I get a message saying, "Safari quit unexpectedly while using the FinderKit plug-in", can anybody help me?! This is the detailed feedback about it Pr