Owen Wang, Author at Perficient Blogs https://blogs.perficient.com/author/owang/ Expert Digital Insights Thu, 03 May 2018 00:22:17 +0000 en-US hourly 1 https://blogs.perficient.com/files/favicon-194x194-1-150x150.png Owen Wang, Author at Perficient Blogs https://blogs.perficient.com/author/owang/ 32 32 30508587 Maven Build Failure – Unknown packaging: content-package https://blogs.perficient.com/2016/09/20/maven-build-failure-unknown-packaging-content-package/ https://blogs.perficient.com/2016/09/20/maven-build-failure-unknown-packaging-content-package/#respond Wed, 21 Sep 2016 02:17:27 +0000 http://blogs.perficient.com/delivery/?p=6132

If you are running a Maven application, in some cases, you may encounter an “Unknown packaging:content-package” issue when you try to build the app. We can’t determine the reason based on this error description. I will guide you through a method for determining the possible root cause and a related solution for this issue step by step.

  1. First, you need to check if the content package plugin is added in your pom.xml. If no, you need to add one.

1

  1. Check if the content package plugin jar file is in the maven repository. If the plugin files aren’t installed in your maven repository, you need to download the artifact from adobe repository.

2

  1. If the plugins file is installed and you still get this error when you do the build, then you need to make sure if the version of plugin files are broken. For example: if you are using the 0.0.20 version in your pom.xml for this plugin, then you can remove the 0.0.20 version, then re-download it from the adobe maven repository or you can modify a higher version of the plugin in your pom.xml file.

3

I fixed my issue in step 3, as my previous version of the plugin files is broken, so I changed it to another version (0.0.24). I did the build again and it works now.

Reference Links:

https://repo.adobe.com/nexus/content/groups/public/

http://repo.maven.apache.org/maven2/

 

 

]]>
https://blogs.perficient.com/2016/09/20/maven-build-failure-unknown-packaging-content-package/feed/ 0 210810
Email Notification failed in BPEL global transaction https://blogs.perficient.com/2013/09/04/2451/ https://blogs.perficient.com/2013/09/04/2451/#respond Thu, 05 Sep 2013 02:26:18 +0000 http://blogs.perficient.com/delivery/?p=2451

Scenario: Sometimes BPEL application need to send out the email alert to let people know what’s the detail error information, then people can analysis the root cause. But if your sync bpel application got an error and bpel throw the exception in Error Handler, it will cause the global transaction rollback, so email will not be triggered to send out.

Solution: to resolve this issue, need to create a new BPEL (child bpel) to invoke the notification service, and use the transaction property in composite.xml to make sure this child BPEL have a new transaction context so that it won’t rollback even if the global transaction failed.

<property name=”bpel.config.transaction” many=”false” type=”xs:string”>requiresNew</property>

 untitled

 

]]>
https://blogs.perficient.com/2013/09/04/2451/feed/ 0 210635
Omit WS-Address of header in BPEL https://blogs.perficient.com/2013/08/04/omit-ws-address-of-header-in-bpel/ https://blogs.perficient.com/2013/08/04/omit-ws-address-of-header-in-bpel/#respond Mon, 05 Aug 2013 02:28:12 +0000 http://blogs.perficient.com/delivery/?p=2439

Scenario: Sometimes bpel application need to invoke the web service, due to some reasons, some web service can not handle the extra header information, but BPEL application send the message with WS-Address by default.

 When BPEL application invoke the web service, it send the message with WS-Address header by default, if web service can not accept the extra header information, it will throw the exception. So how should we resolve this problem?

There is a property “oracle.soa.ws.outbound.omitWSA” can resolve this issue. You can add this property to your related web service reference in composite.xml file, then set this property value to true, compile the bpel application and test , it should be successfully.

]]>
https://blogs.perficient.com/2013/08/04/omit-ws-address-of-header-in-bpel/feed/ 0 210633
Transaction usage in Oracle Service Bus https://blogs.perficient.com/2013/06/24/transaction-usage-in-oracle-service-bus/ https://blogs.perficient.com/2013/06/24/transaction-usage-in-oracle-service-bus/#comments Mon, 24 Jun 2013 05:03:31 +0000 http://blogs.perficient.com/delivery/?p=2413

Scenario: As we all know transaction concept in DB means several operations commit together, one step failed, it will roll back all the changes in DB. So this kind of technology could be used in Oracle Service Bus too.

 OSB service has request pipeline and response pipeline, When an OSB  proxy service consume a file from a folder path or consume a message from queue, if we enable the transaction settings for a proxy, OSB will make sure the whole workflow (request pipeline and response pipeline) successfully finished, if any of step failed during the workflow process, then the file/message will not be consumed by OSB server, it will be always there try and try again. Definitely you can set the retry count or delivery failed limit settings to prevent the server try to process instances over and over again. But Transaction settings provided you a reliable delivery solution for your business.

You could just enable “Transaction Required” options in OSB proxy if you needed.

10

]]>
https://blogs.perficient.com/2013/06/24/transaction-usage-in-oracle-service-bus/feed/ 1 210629
Unlock user accounts in Oracle weblogic https://blogs.perficient.com/2013/05/23/unlock-user-accounts-in-oracle-weblogic/ https://blogs.perficient.com/2013/05/23/unlock-user-accounts-in-oracle-weblogic/#respond Thu, 23 May 2013 05:26:03 +0000 http://blogs.perficient.com/delivery/?p=2248

Scenario:  Sometimes people may input the wrong password several times, that will cause user locked by weblogic console, even reset password for this specific user in Admin console, still doesn’t work. So we need to unlock this user in Oracle weblogic console.

Solution:

  1. Login to Oracle weblogic Admin console with other user account, click Lock & Edit.
  2. In the left pane click the name of the domain.
  3. Select Security > Unlock User.
  4. Enter the user name of the user whose account you want to unlock.
  5. Click Save.

01

]]>
https://blogs.perficient.com/2013/05/23/unlock-user-accounts-in-oracle-weblogic/feed/ 0 210619
OSB JCA file adapter cannot consume messages with UTF-16 schema https://blogs.perficient.com/2013/04/15/osb-jca-file-adapter-cannot-consume-messages-with-utf-16-schema/ https://blogs.perficient.com/2013/04/15/osb-jca-file-adapter-cannot-consume-messages-with-utf-16-schema/#respond Mon, 15 Apr 2013 07:13:43 +0000 http://blogs.perficient.com/delivery/?p=2158

Scenario: There is a requirement that need to consume file message from a file location, but the message schema for consume file was using UTF-16 encoding. Generate the JCA adapter in Jdeveloper with a UTF-16 xsd schema defined at the last step, then you will get a wsdl associate with this xsd schema, then import these files in OSB, generate the related OSB proxy service. But OSB proxy service can not read the input messages with UTF-16 schema associated, because the default of the message encoding is UTF-8. Also tried “Encoding” and “jca.message.encoding” binding property, but these are binding property used for BPEL, not for OSB JCA file.

 

Solution: Use File protocol instead – OSB File adapter to archive this requirement, because there is an configuration setting for “Encoding” in OSB proxy for file adapter.

 

  1. Create a new Proxy service with file protocol for consuming, definitely you need to use the UTF-16 schema in your proxy service
  2. Set the listening file location or archive file location if you want to
  3. Set the UTF-16 for encoding setting when you create the Proxy service.
  4. Save the changes and activate the session.

 untitled

]]>
https://blogs.perficient.com/2013/04/15/osb-jca-file-adapter-cannot-consume-messages-with-utf-16-schema/feed/ 0 210610
PL/SQL inserts a long XML string to DB table https://blogs.perficient.com/2012/12/10/plsql-inserts-a-long-xml-string-to-db-table/ Mon, 10 Dec 2012 16:46:48 +0000 http://blogs.perficient.com/delivery/?p=2023

You want to insert an XML payload record in DB table, but the content for that column is too long and you can’t insert it into table. The traditional SQL: “insert into table (field1) values (‘yourxml’)” will fail because of the long characters. How do you handle this situation?

Scenario:  client requires to insert a XSLT/XQuery into one of the column in Oracle DB table, but the length of the XSLT is too long, oracle DB will  throw an exception if try to insert it into DB.

The exception error is like: “SQL Error: ORA-01704: string literal too long; Cause:    The string literal is longer than 4000 characters.”

Solution: We can use PL/SQL blocks and XML type data type to resolve this problem.

The format is just like this:

Declare yourXmlStr xmltype: =xmltype(‘your xml’);

Begin

Insert into table (column) values (yourXmlStr);

End;

Run this block and commit it, the record should be inserted into DB successfully.

PS: The required column of DB table should have no character size limited, you can defined the type of that column “clob”, of course PL/Sql support many data type, here just set the XML type as an example.

]]>
210600
Easily Import MQ Adapter into the Oracle Service Bus https://blogs.perficient.com/2012/08/27/easy-way-to-import-mq-adapter-into-oracle-service-bus/ https://blogs.perficient.com/2012/08/27/easy-way-to-import-mq-adapter-into-oracle-service-bus/#comments Mon, 27 Aug 2012 14:14:16 +0000 http://blogs.perficient.com/delivery/?p=1789

Scenario: At the first installation of the Fusion middle ware, the MQ transport protocol will not be included in the Oracle Service Bus. If you want to import a OSB project(jar file) which contains the MQ transport configuration, you will get the error, “Transport provider with id ‘mq’ is not registered.”

Here is an easy way to make the MQ transport protocol available in Oracle Service Bus.

1)      Find and download the “com.ibm.mqjms.jar” and “com.ibm.mq.jar” files

2)      Copy these two jar files into your fusion domain installation folder, the folder path should be Oracle\Middleware\home_11gR1\user_projects\domains\Your_Domain\lib

3)      Restart your weblogic server.

After you restart your weblogic server, you will find the MQ transport protocol exist in Business service transport configuration and the MQ connection will be appeared in resource.

 

]]>
https://blogs.perficient.com/2012/08/27/easy-way-to-import-mq-adapter-into-oracle-service-bus/feed/ 2 210577
General Introduction of oracle business rules https://blogs.perficient.com/2012/08/20/general-introduction-of-oracle-business-rules/ https://blogs.perficient.com/2012/08/20/general-introduction-of-oracle-business-rules/#respond Mon, 20 Aug 2012 14:43:22 +0000 http://blogs.perficient.com/delivery/?p=1776

Oracle Business Rules is a high performance lightweight business rules product that addresses the requirements for agility, business control, and transparency. It is part of the Fusion Middleware stack and integrates seamlessly across the entire Oracle SOA Suite and BPM Suite stack. It is also a core component for present and future Oracle Fusion Middleware and Fusion Applications products. Oracle Business Rules enables its customers to become more agile.

Scenario:

Sometimes, some of the non-technical people need to explain the requirement for the customer and show them the result to check if it is the customer’s expect result, so they can use business rules model to build the prototype quickly, it’s more agile and easy to understand.

Steps to create the business rule:

  1. Create an empty project in Jdeveloper, then in the business rules folder of empty project, New – >SOA tier->Service Components, choose Business Rules.
  2. Defined your input parameter and output parameter for the business rule, the parameter based on the message schema which they are ready already.
  3. Once business rules is created, you can set decision table or If/else in Rulesets, decision table is just like the graphic chart of If/Else so that non-technical people who don’t understand the programming also can handle this.
  4. You can create Rule condition and Rule Action in decision table or you coding them in the If/else.  Once the input meets the rule condition, business rules will do the rule action which you defined.
  5. Compile the whole project and deploy it to the server. You also can change/add the rule condition or rule action in the run time, don’t need to compile the code and deploy to server every time.

 

]]>
https://blogs.perficient.com/2012/08/20/general-introduction-of-oracle-business-rules/feed/ 0 210574
Insert a long XML string to DB table with PL/SQL https://blogs.perficient.com/2012/05/29/insert-a-long-xml-string-to-db-table-with-plsql/ https://blogs.perficient.com/2012/05/29/insert-a-long-xml-string-to-db-table-with-plsql/#comments Tue, 29 May 2012 06:27:21 +0000 http://blogs.perficient.com/delivery/?p=1486

You want to insert an XML payload record in DB table, but the content for that column is too long and you can’t insert it into table. The traditional SQL: “insert into table (field1) values (‘yourxml’)” will fail because of the long characters. How do you handle this situation?

Scenario:  client requires to insert a XSLT/XQuery into one of the column in Oracle DB table, but the length of the XSLT is too long, oracle DB will  throw an exception if try to insert it into DB.

The exception error is like: “SQL Error: ORA-01704: string literal too long; Cause:    The string literal is longer than 4000 characters.”

Solution: We can use PL/SQL blocks and XML type data type to resolve this problem.

The format is just like this:

Declare yourXmlStr xmltype: =xmltype(‘your xml’);

Begin

Insert into table (column) values (yourXmlStr);

End;

Run this block and commit it, the record should be inserted into DB successfully.

PS: The required column of DB table should have no character size limited, you can defined the type of that column “clob”, of course PL/Sql support many data type, here just set the XML type as an example.

]]>
https://blogs.perficient.com/2012/05/29/insert-a-long-xml-string-to-db-table-with-plsql/feed/ 2 210538
Exposed two interface for Oracle BPEL application https://blogs.perficient.com/2012/05/20/exposed-two-interface-for-oracle-bpel-application/ https://blogs.perficient.com/2012/05/20/exposed-two-interface-for-oracle-bpel-application/#respond Mon, 21 May 2012 03:11:44 +0000 http://blogs.perficient.com/delivery/?p=1374

Sometimes, OSB call BPEL application need to use SOA-direct protocol. But while you use this protocol, you can’t debug and test your BPEL application in the enterprise manager (EM), because direct binding interface disabled the “Test” button in the EM. Can we use SOA-direct protocol for OSB call to BPEL and also debug the BPEL application in EM directly?

Scenario: A client required using SOA-direct protocol from OSB call to BPEL and user can debug and test the BPEL application in EM directly.

Solution: we can use direct binding adapter and web service adapter together in BPEL application for implementing the functions. Here are the steps below:

 

1)      Create a test BPEL in the composite.xml file, by default, it will generate a web service WSDL and web service interface exposed to external client to invoke. Let’s name WSDL file and web service interface “testbpel.wsdl” and “testbpel_WebService”

2)      Drag a direct binding adapter from component palette to the Exposed Service line, choose the “testbpel.wsdl”, then named it “testBPEL_DService”

3)      Drag the “testBPEL_DService” interface to the BPEL interface point which is tied with the web service interface together already.  (These two external interface need to tied with BPEL together, don’t separate them)

4)      After your BPEL application code finished, compile the BPEL and deploy to the SOA server, you will find “Test” button is available in the EM for this BPEL application.

5)      In the OSB business service, the protocol need to select SOA-direct and URI need to use t3:// for the direct binding call.

 

PS: Please drag Web Service interface and Direct Service interface tie to the same BPEL interface point, don’t tie to the BPEL interface point separately, or it will always get an server error. Because there will not be two client in test BPEL.bpel file.

]]>
https://blogs.perficient.com/2012/05/20/exposed-two-interface-for-oracle-bpel-application/feed/ 0 210529
Oracle Service Bus Proxy Service listening on the Database table https://blogs.perficient.com/2012/05/02/oracle-service-bus-proxy-service-listening-on-the-database-table-3/ https://blogs.perficient.com/2012/05/02/oracle-service-bus-proxy-service-listening-on-the-database-table-3/#comments Thu, 03 May 2012 02:39:50 +0000 http://blogs.perficient.com/delivery/?p=1101

Author   Owen Wang   SR. Engineer

Case Scenario:
If one of the DB record is updated, insert or delete in DB table, applications need to capture these changes and send request message to notify the back end application.

Most of people know how to listen on a database table in the BPEL, because BPEL has a good DB adapter wizard component to guide you step by step for a DB table read, but how to implement this functionality in the oracle service bus?
Here I want to introduce a way to figure it out. In this example, we still need to use BPEL to help us to set up the DB table listener for the OSB proxy service.

Here are the general steps as below:

1.    Drag a DB adapter in the Exposed Services of the BPEL application to read message from Database.
2.    Follow the wizard guide step to step to finish the configuration. After this step, you will get a WSDL file, a JCA file and a *-or-mappings.xml file. Let’s named them Bpel.wsdl, DBRead.jca and DBRead-or-mappings.xml.
3.    Create a JCA Binding Resource in the oracle service bus, then copy the content of DBRead.jca to the new JCA Binding resource, also you need to associate the Bpel.wsdl and DBRead-or-mappings.xml files with JCA Binding.
4.    After JCA Binding is finished, click the “Generate WSDL and Service from this JCA Binding resource” button in the right of the JCA Binding file. (This step is important. You need to use the wsdl and service generated by OSB itself.)
5.    After step 4, you will get a proxy service and another wsdl file in the oracle service bus, let’s named them DBReader.proxy and db_OSB_reader.wsdl file.
6.    Please pay attention on the db_OSB_reader.wsdl, it will import the Bpel.wsdl structure and db_OSB_reader. WSDL will be used by DBReader.proxy service.
7.    Configure JCA protocol , endpoint URL etc settings in the DBReader.proxy
8.    Activate the changes in the oracle service bus.

PS: There is an XSD file associates with the Bpel.wsdl file, this XSD file is the service schema element file which is used to mapping the Database table fields.

]]>
https://blogs.perficient.com/2012/05/02/oracle-service-bus-proxy-service-listening-on-the-database-table-3/feed/ 1 210506